1

Java1.6に関連する問題をデバッグしようとしていDecimalFormat#applyPattern(String)ます。デフォルトのロケールはフランス語であるため、デフォルトの小数点記号は'、'です。ただし、パターンは「。」の適用を指定します。見えない10進形式のインスタンスに。デバッグしようとしましapplyPattern()たが、変数値が表示されませんでした。私はパターンと正規表現にあまり詳しくないので、問題がパターンにあるのか、それとも他の何かにあるのかわかりません。パターンが正しくないのですか、それともコードに他の問題がありますか?

コードスニペットは次のとおりです。

public class DecimalFormatTester
{
   static private final DecimalFormat doubleFormat = (DecimalFormat) NumberFormat.getInstance();

     static 
     {
       doubleFormat.applyPattern("############.00");
     }

  public static String toString(double value) 
  {
    synchronized (doubleFormat) 
    {
        return doubleFormat.format(value);
    }
  }
}

Junit失敗するコードのサンプル行は次のとおりです。

assertEquals("String values aren't equal", "2179005635.00", DecimalFormatTester.toString(2.179005635E9));
4

3 に答える 3

3

.inパターン############.00は、(現在設定されている)decimalCharacterのプレースホルダーです。

10進数として使用する場合は.、decimalCharacterを追加で設定する必要があります。設定することによりLocale.US

現在のロケールを保存してからに設定しLocale.US、保存したロケールを元に戻すこともできますLocaleが、アプリがマルチスレッドでないことを確認してください。

あなたも使うことができます

DecimalFormatSymbols.getInstance().setDecimalSeparator(".");
于 2013-01-07T18:26:31.450 に答える
1

適切な出力のロケールを変更します。一方で、カスタムを使用することができますDecimalFormatSymbols

###,###.###      123,456.789     en_US
###,###.###      123.456,789     de_DE
###,###.###      123 456,789     fr_FR

詳細については、ロケール依存の書式設定を参照してください

于 2013-01-07T18:37:46.740 に答える
0

パターン############.00では、「。」ロケールの小数点を表します。

あなたの場合、それはフランス語の小数点で、「、」であると理解しています。

于 2013-01-07T18:30:00.760 に答える