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

java: get different parts of NumberFormat.getCurrencyInstance() result

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

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

有没有简单的方法来获取这个格式化字符串的不同部分?即类似

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

谢谢!

您实际上要求的是两件不同的事情:

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

    double input = 20.10;
    int integerPart = (int)input; // 20
    int decimalPart = (int)((input - integerPart) * 100); // 10
    
  2. currencySymboldecimalSeparatoroutput 值相关。可以使用 DecimalFormatSymbols class:

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