假设我有以下代码:
NumberFormat formatter = DecimalFormat.getInstance(Locale.getDefault());
System.out.println(formatter.getMaximumFractionDigits());
Locale l = Locale.getDefault();
System.out.println(l.getCountry());
这会打印3.和国家/地区
如果我将语言环境更改为(“sv”,“SE”),它仍会打印3. AND SE
我在Windows机器上。如果我通过控制面板查看区域设置并查看“英国美国”或“瑞典瑞典”,则表明这两个国家/地区的“十进制后的位数”为2。
NumberFormat类选择的默认值在哪里?它如何以分数值3结束?
答案 0 :(得分:1)
格式化货币时,小数点后的位数为2,但出于其他目的,则为3:
NumberFormat formatter = NumberFormat.getCurrencyInstance();
System.out.println(formatter.getMaximumFractionDigits()); // often 2
在OpenJDK 7中,位数来自该国家/地区的货币数据。货币数据以二进制格式存储在安装JDK的currency.data
目录中名为lib
的文件中,因此更改Windows首选项中小数点后显示的位数对Java应用程序没有影响。如果您更改了国家/地区,但您会看到NumberFormat
适应:
NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.JAPAN);
System.out.println(formatter.getMaximumFractionDigits()); // 0
答案 1 :(得分:0)
值的来源是Locale,并且语言环境数据位于JVM文件夹中的jar中%JAVA_HOME%/ jre / lib / ext / localedata.jar