java:获取NumberFormat.getCurrencyInstance()结果的不同部分

时间:2017-03-18 00:10:18

标签: java currency number-formatting

在Java中,使用NumberFormat.getCurrencyInstance(),我可以获得表示价格的格式化字符串。 e.g。

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

有没有一种简单的方法来获取此格式化字符串的不同部分?即

之类的东西
integerPart -> 20
decimalPart -> 10
currencySymbol -> €
decimalSeparator -> ,

谢谢!

1 个答案:

答案 0 :(得分:2)

你真的要求两件事:

  1. integerPartdecimalPart属于输入值。它们可以用一些简单的数学计算:

    double input = 20.10;
    int integerPart = (int)input; // 20
    int decimalPart = (int)((input - integerPart) * 100); // 10
    
  2. currencySymboldecimalSeparator输出值相关。可以使用DecimalFormatSymbols类检索它们:

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