私はベルギーに住んでいます。そして一般的に、数学では、次のように小数をコンマで書きます:3,141592
そして、それは私がformat floatの場合の結果でもあります。
_System.out.println(String.format("%f", 3.141592));
_
したがって、_.
_は_,
_のように_3,141592
_に置き換えられます。したがって、常にポイントが必要な場合は常に、次のようなものを追加する必要があります:String.format("%f", 3.14).replace(',','.');
だから、問題は:Javaのすべてのフォーマッターがコンマの代わりにポイントを使用するようにするロケールを変更する方法はありますか?
ありがとう
_System.out.println(Locale.getDefault());
_
プリント
_nl_BE
_
フォーマット中に使用するロケールを設定するだけの場合は、String.format(Locale.US, "%f", floatValue)
を使用してみてください。
単純な解決策ですが、ロケール全体に広範囲に及ぶ場合は、システムのロケールを米国または英国に設定します。例。
Locale.setDefault(Locale.US);
質問を変更したので、ローカルを印刷方法で指定するだけです。
System.out.println(String.format(Locale.US, "%f", 3.141592));
文字列を正確に出力するための多数のオプションが含まれている http://download.Oracle.com/javase/6/docs/api/Java/text/DecimalFormat.html を確認すると便利です。必要に応じてロケールを使用する
DecimalFormatは、10進数をフォーマットするNumberFormatの具象サブクラスです。西洋、アラビア語、インドの数字のサポートを含む、あらゆるロケールで数値を解析およびフォーマットできるように設計されたさまざまな機能があります。また、整数(123)、固定小数点数(123.4)、科学表記(1.23E4)、パーセンテージ(12%)、通貨金額($ 123)など、さまざまな種類の数値もサポートしています。これらはすべてローカライズできます。
多くの場合、カスタムルーチンを通じて入力と出力をルーティングすると便利です。これはJAMAライブラリからのものです(http://math.nist.gov/javanumerics/jama/)
public void print (PrintWriter output, int w, int d) {
DecimalFormat format = new DecimalFormat();
format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.US));
format.setMinimumIntegerDigits(1);
format.setMaximumFractionDigits(d);
format.setMinimumFractionDigits(d);
format.setGroupingUsed(false);
print(output,format,w+2);
}
これを使用することで、将来の問題や機能強化に確実に対処できるようになります。
数値のフォーマットについては、実際にはtoString()
に依存しないでください。 NumberFormat
、またはDecimalFormat
のファクトリメソッドであるString.format()
を使用すると、一部に依存することなく、数値のフォーマット方法(ロケールを選択して最初の2つ)を制御できます。グローバル設定。