2017-03-18 59 views
1

在Java中,使用NumberFormat.getCurrencyInstance(),我可以獲得表示價格的格式化字符串。例如java:獲取NumberFormat.getCurrencyInstance()結果的不同部分

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY); 
System.out.println(nf.format(20.10)); // "20,10 €" 

是否有一種簡單的方法來獲取此格式化字符串的不同部分?即類似於

integerPart -> 20 
decimalPart -> 10 
currencySymbol -> € 
decimalSeparator -> , 

謝謝!

+0

爲什麼你需要做的這件事情:他們可以使用DecimalFormatSymbols類檢索? – freedev

回答

2

你真的要求兩回事:

  1. integerPartdecimalPart屬於輸入值。他們可以用一些簡單的數學計算:

    double input = 20.10; 
    int integerPart = (int)input; // 20 
    int decimalPart = (int)((input - integerPart) * 100); // 10 
    
  2. currencySymboldecimalSeparator涉及輸出值。

    DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.GERMANY); 
    String currencySymbol = symbols.getCurrencySymbol(); // € 
    char decimalSeparator = symbols.getDecimalSeparator(); // , 
    
+0

謝謝!但不完全同意1.說如果輸入是20.0163,所需的decimalPart將是「02」。我知道我仍然可以通過一些處理得到它,但由於NumberFormat已經完成了這項工作,我想只是在可能的情況下選擇結果。 – lznt

+0

@lznt只需使用'(int)Math.round((input - integerPart)* 100)'或任何其他舍入方法。 – shmosel

+0

*由於NumberFormat已經完成了這項工作,我希望只要可能就選擇結果。*結果只是一個字符串。當然,如果你真的想要的話,你可以用正則表達式來切割它。但這似乎是一種倒退的做事方式。 – shmosel