現在、次のコードを使用してdoubleを印刷します。
return String.format("%.2f", someDouble);
これはうまく機能しますが、Javaはロケールの小数点記号(コンマ)を使用しますが、ポイントを使用したいのですが、これを行う簡単な方法はありますか?
String.format
のオーバーロードを使用して、ロケールを指定できます。
return String.format(Locale.ROOT, "%.2f", someDouble);
あなたがonlyだけをフォーマットしている場合(ここにあるように)、NumberFormat
を使用するのがおそらくより適切でしょう。ただし、String.format
の残りのフォーマット機能が必要な場合は、これで十分です。
より抜本的な解決策は、main()の早い段階でロケールを設定することです。
好む:
Locale.setDefault(new Locale("en", "US"));
追加のロケールを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 を参照してください。
遅すぎますが、ここで他に言及したように、NumberFormat
(およびそのサブクラスDecimalFormat
)の使用例です。
public static String format(double num) {
DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
decimalSymbols.setDecimalSeparator('.');
return new DecimalFormat("0.00", decimalSymbols).format(num);
}
NumberFormatとDecimalFormatを使用できます。
Java Tutorials LocaleSpecific Formatting からこのリンクを見てください。
Locale-Sensitive Formattingというタイトルのセクションが必要です。