web-dev-qa-db-ja.com

javaの小数点記号として強制ポイント( "。")

現在、次のコードを使用してdoubleを印刷します。

return String.format("%.2f", someDouble);

これはうまく機能しますが、Javaはロケールの小数点記号(コンマ)を使用しますが、ポイントを使用したいのですが、これを行う簡単な方法はありますか?

91
dtech

String.format のオーバーロードを使用して、ロケールを指定できます。

return String.format(Locale.ROOT, "%.2f", someDouble);

あなたがonlyだけをフォーマットしている場合(ここにあるように)、NumberFormatを使用するのがおそらくより適切でしょう。ただし、String.formatの残りのフォーマット機能が必要な場合は、これで十分です。

153
Jon Skeet

より抜本的な解決策は、main()の早い段階でロケールを設定することです。

好む:

Locale.setDefault(new Locale("en", "US"));
18
Federico Giorgi

追加のロケールをJava.io.PrintStream.printfだけでなくJava.lang.String.formatにも渡すことができます(例:System.out.printf()):

import Java.util.Locale;

public class PrintfLocales {

    public static void main(String args[]) {
        System.out.printf("%.2f: Default locale\n", 3.1415926535);
        System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535);
        System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535);
    }

}

これにより、次の結果が得られます(私のPC上):

$ Java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

Java API。の String.format を参照してください。

10

遅すぎますが、ここで他に言及したように、NumberFormat(およびそのサブクラスDecimalFormat)の使用例です。

public static String format(double num) {
    DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
    decimalSymbols.setDecimalSeparator('.');
    return new DecimalFormat("0.00", decimalSymbols).format(num);
 }
8
VizGhar

NumberFormatとDecimalFormatを使用できます。

Java Tutorials LocaleSpecific Formatting からこのリンクを見てください。

Locale-Sensitive Formattingというタイトルのセクションが必要です。

0
blong824