2015-08-28 40 views
4

我有格式化一個問題,當我給一個0.00的回報+0,00Ë但我想0,00 E.的Java十進制格式問題零(0.00)

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 
+0

FORMATTER_SIGN.format(0) –

+0

我不想只是零 –

回答

2

你可以創建自己的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. 
} 
2

我能得到的 「+」 擺脫當我刪除行

FORMATTER_SIGN.setPositivePrefix("+\u00a0"); 

或將其更改爲

FORMATTER_SIGN.setPositivePrefix(""); 

得到的

0,00€

PS:您format調用不會爲我工作,我需要做的是這樣的:

FORMATTER_SIGN.format(Double.valueOf("0.00")); // this 
+0

比澤的數ro,plus應該會出現。 例如 0,00 + 12,43 - 232,54 + 5 435,33 –

+2

@Tomas很好,這是您的問題中缺少的關鍵要求。 – hiergiltdiestfu