1

次のコードがあるとしましょう:

 NumberFormat formatter = DecimalFormat.getInstance(Locale.getDefault());
  System.out.println(formatter.getMaximumFractionDigits());
  Locale l = Locale.getDefault();
  System.out.println(l.getCountry());

これは 3. と国 US を出力します

ロケールを ("sv", "SE") に変更しても、3. AND SE が出力されます。

私はWindowsマシンを使用しています。コントロール パネルで地域設定を確認し、「English US」または「Swedish Sweden」を見ると、これらの国で「小数点以下の桁数」が 2 であることが示されます。

NumberFormat クラスによって選択されるデフォルトはどこにありますか? 分数の値が 3 になるのはどうしてですか?

4

2 に答える 2

1

小数点以下の桁数は、通貨をフォーマットする場合は 2 ですが、他の目的では 3 です。

NumberFormat formatter = NumberFormat.getCurrencyInstance();
System.out.println(formatter.getMaximumFractionDigits()); // often 2

OpenJDK 7 では、桁数は国の通貨データから取得されます。通貨データは、JDK がインストールされているディレクトリに呼び出されるファイルにバイナリ形式で格納されるため、Windows の設定で小数点以下に表示される桁数を変更しても、Java アプリケーションには影響しませcurrency.dataん。国を変更すると、それが適応libすることがわかります:NumberFormat

NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.JAPAN);
System.out.println(formatter.getMaximumFractionDigits()); // 0
于 2013-09-25T17:03:23.520 に答える
0

値の起点はロケールであり、ロケール データは JVM フォルダー %JAVA_HOME%/jre/lib/ext/localedata.jar の jar にあります。

于 2013-09-25T17:10:03.990 に答える