3

簡単なテストコードを用意しましょう:

public static void main(String ... arg)
{
    double d = 4000.0;
    DecimalFormat df = new DecimalFormat("#,###.##");
    System.out.println(df.format(d));
}

Oracle/SUN の Java 出力は (スペースあり):

4 000

しかし、IBM Javaで私は得ました:

4,000

私のJava:

Java バージョン "1.7.0_51" Java(TM) SE ランタイム環境 (ビルド 1.7.0_51-b13) Java HotSpot(TM) 64 ビット サーバー VM (ビルド 24.51-b03、混合モード)

IBM ジャバ:

java -version java バージョン "1.6.0" Java(TM) SE ランタイム環境 (ビルド pap6460_26sr7ifix-20131203_01(SR7+IX90131+IV52621)) IBM J9 VM (ビルド 2.6、JRE 1.6.0 AIX ppc64-64 圧縮参照 20131011_170248 (JIT)有効、AOT 有効) J9VM - R26_Java626_SR7_20131011_1221_B170248 JIT - r11.b05_20131003_47443 GC - R26_Java626_SR7_20131011_1221_B170248_CMPRSS J9CL - 20131011_1CL301 - 25) JCL302

これはなぜですか?1.6/1.7の差だから?または、そのロケールの問題かもしれませんが、おそらくそうではありません。

4

1 に答える 1

0

わかりました、おそらくここで解決策が見つかりました DecimalFormat のグループ化区切り文字はありません

とてもシンプルです:)

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat df = new DecimalFormat("#,###.##");
df.setDecimalFormatSymbols(symbols);

どうやら ibm と oracle は異なるデフォルトのグループセパレーターを使用しています。なぜかわからない

于 2014-10-28T11:52:24.837 に答える