Java十进制格式发布零(0.00)
我的格式化程序有问题,当我给出0.00返回+0,00E,但我希望0,00EJava十进制格式发布零(0.00),java,decimalformat,Java,Decimalformat,我的格式化程序有问题,当我给出0.00返回+0,00E,但我希望0,00E String PATTERN = "###,##0.00\u00a0\u00A4"; DecimalFormatSymbols SYMBOLS = DecimalFormatSymbols.getInstance(Locale.FRANCE); DecimalFormat FORMATTER_SIGN = new DecimalFormat(PATTERN, SYMBOLS); FORMATTER_SIGN.setNeg
String PATTERN = "###,##0.00\u00a0\u00A4";
DecimalFormatSymbols SYMBOLS = DecimalFormatSymbols.getInstance(Locale.FRANCE);
DecimalFormat FORMATTER_SIGN = new DecimalFormat(PATTERN, SYMBOLS);
FORMATTER_SIGN.setNegativePrefix("-\u00a0");
FORMATTER_SIGN.setPositivePrefix("+\u00a0");
FORMATTER_SIGN.format("0.00") // this
我可以在删除该行时去掉“+”
FORMATTER_SIGN.setPositivePrefix("+\u00a0");
或者改成
FORMATTER_SIGN.setPositivePrefix("");
导致
0,00欧元
注:您的格式
呼叫对我不起作用,我需要做如下操作:
FORMATTER_SIGN.format(Double.valueOf("0.00")); // this
您可以创建自己的识别零的DecimalFormat(简化示例):
FORMATTER_SIGN.format(0)对于大于零的数字,我不希望仅将其置零,而应显示加号。例如0,00+12,43-232,54+5435,33@Tomas这是你问题中缺少的一个关键要求。
class ZeroAwareDecimalFormat extends DecimalFormat {
private final DecimalFormat zeroFormat;
public ZeroAwareDecimalFormat(String posNegPattern, String zeroPattern) {
super(posNegPattern);
zeroFormat = new DecimalFormat(zeroPattern);
}
@Override
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition) {
if (number == 0L) {
return zeroFormat.format(number, result, fieldPosition);
} else {
return super.format(number, result, fieldPosition);
}
}
// Override the other methods accordingly.
// set... methods should be propagated to super and zeroFormat.
}