Java十进制格式问题零(0.00)



我有一个格式化程序的问题,当我给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

最新更新