Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:获取NumberFormat.getCurrencyInstance()结果的不同部分_Java_Currency_Number Formatting - Fatal编程技术网

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

java:获取NumberFormat.getCurrencyInstance()结果的不同部分,java,currency,number-formatting,Java,Currency,Number Formatting,在Java中,通过NumberFormat.getCurrencyInstance(),我可以获得表示价格的格式化字符串。e、 g NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY); System.out.println(nf.format(20.10)); // "20,10 €" 有没有一种简单的方法来获取这个格式化字符串的不同部分?i、 例如 integerPart -> 20 decimalPar

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

NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY);
System.out.println(nf.format(20.10)); // "20,10 €"
有没有一种简单的方法来获取这个格式化字符串的不同部分?i、 例如

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

谢谢

你真的要求两件事:

  • integerPart
    decimalPart
    属于输入值。它们可以通过一些简单的数学计算得出:

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

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

  • 你为什么要这么做?谢谢!但并不完全同意1。假设输入为20.0163,则所需的小数部分为“02”。我知道我仍然可以通过一些处理来获得它,但是由于NumberFormat已经完成了这项工作,如果可能的话,我只想选择结果。@lznt只需要使用
    (int)Math.round((input-integerPart)*100)
    或任何其他舍入方法。因为NumberFormat已经完成了这项工作,所以如果可能的话,我只想选择结果。结果只是一个字符串。当然,如果你真的想的话,你可以用正则表达式把它切碎。但这似乎是一种落后的做事方式。