4

最近まで、私のコードは開発マシンと展開サーバーで正常に動作していました。

突然、DecimalFormatが期待どおりに機能しません。これは、 Windows 10 Creators Updateの後であると確信しています。

私のコードは次のとおりです。

double x = 22.44;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(x));

出力: 22.44 の代わりに 22,44

に変更した場合:

double x = 22.44;
DecimalFormat df = new DecimalFormat("0,00");
System.out.println(df.format(x));

出力: 0.22

jdk 1.7.0_79u (64 ビット) で netbeans 7.4 を使用しています jdk を 1.7.0_80u (32 ビット) に変更しようとしましたが、違いはありませんでした。小数点記号と桁区切り記号のロケール設定も変更しましたが、それでも同じ問題が発生します。

この問題を解決する方法についてアイデアをお持ちの方はいますか?

4

2 に答える 2

4

これはロケールの問題である可能性があります。現在のコードはシステムのデフォルトのロケールを使用していますが、これは Java 7 と Java 8 では異なる方法で行われる可能性があります。特定のロケールを使用する場合は、次を使用できます。

double x = 22.44;
DecimalFormat df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.FRANCE));
System.out.println(df.format(x));

df = new DecimalFormat("0.00", new DecimalFormatSymbols(Locale.UK));
System.out.println(df.format(x));

出力:

22,44 (コンマ付き)
22.44 (ドット付き)

于 2017-06-13T07:48:13.683 に答える
4

これがシステム ロケールになります。国によって、小数点と桁区切り記号に異なる文字が使用されます。

ロケールを 10 進形式で設定して、システムのデフォルトを上書きできます。または、システムのデフォルトを変更できます。

于 2017-06-13T07:32:47.593 に答える