1

Locale少なくとも数字の場合、適切な位置にコンマを追加するだけの認識がありました。しかし、私が試したものとは異なる出力が表示されます。

私は次のことを試しました、

public static void main(String[] args) {
    DecimalFormat df = null;

    df = (DecimalFormat) DecimalFormat.getInstance(Locale.CHINESE);
    System.out.println("Locale.CHINESE "+df.format(12345.45));

    df = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN);
    System.out.println("Locale.GERMAN  "+df.format(12345.45));
}

出力:

Locale.CHINESE 12,345.45
Locale.GERMAN  12.345,45

コンマを注意深く見ると、大きな違いがわかります。

今、java.util.Localeのjavadocは言う

... タスクを実行するためにロケールを必要とする操作は、ロケール依存と呼ばれ、ロケールを使用してユーザーの情報を調整します。たとえば、数値の表示はロケールに依存する操作です。数値は、ユーザーの母国、地域、または文化の慣習/慣習に従って書式設定する必要があります...

Locale値が変更されているため、コンマが別の で小数点として解釈されていることがわかります。これは本当に興味深いことです。

だから、これを理解するのを手伝ってください。正確には何Localeですか?出力の大幅な変更により、コード/データに大きな問題が発生することはありませんか?

4

2 に答える 2

2

Locale は、少なくとも数字の場合、適切な位置にカンマを追加するだけであるという認識がありました。

いいえ、ご覧のとおり、使用される記号にも影響します。

だから、これを理解するのを手伝ってください。ロケールとは正確には何ですか? 出力の大幅な変更により、コード/データに大きな問題が発生することはありませんか?

正しく使用しない場合のみ:) 通常、マシン間の通信はローカライズされるべきではありません。通常、本当にテキストを使用する必要がある場合は、適度に不変なロケールとして US を使用することをお勧めします。

DecimalFormatSymbolsロケール固有の詳細については、を参照してください。

于 2012-11-26T16:41:14.997 に答える
1

上記に問題はありません。ドイツ語の表現方法12345.45は 12.345,45
で、同じ数値を表現する中国の方法は 12,345.45 です。

だから、これを理解するのを手伝ってください。ロケールとは正確には何ですか? 出力の大幅な変更により、コード/データに大きな問題が発生することはありませんか?

いいえ、入力のロケールとフォーマット方法を追跡する必要があるだけではありません。

于 2012-11-26T16:41:25.080 に答える