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