我有一个格式化程序的问题,当我给0.00返回+ 0,00e,但我想要0,00e
String PATTERN = "###,##0.00u00a0u00A4";
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
您可以创建自己的能够识别零的DecimalFormat(简化示例):
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.
}
当我删除
一行时,我可以去掉"+"FORMATTER_SIGN.setPositivePrefix("+u00a0");
或者改成
FORMATTER_SIGN.setPositivePrefix("");
的
0, 00€
PS:你的format
呼叫对我不起作用,我需要做这样的事情:
FORMATTER_SIGN.format(Double.valueOf("0.00")); // this