java:获取NumberFormat.getCurrencyInstance()结果的不同部分
在Java中,通过NumberFormat.getCurrencyInstance(),我可以获得表示价格的格式化字符串。e、 gjava:获取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
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已经完成了这项工作,所以如果可能的话,我只想选择结果。结果只是一个字符串。当然,如果你真的想的话,你可以用正则表达式把它切碎。但这似乎是一种落后的做事方式。