質問

変換したいのですが double の中へ String. 。できるだけ少ない数字を持ち、最大限に6を持っていることを望んでいます。

だから私は見つけました String.format("%.6f", d) それは私を変換します 100.0 の中へ 100.000000。 Max Precisionは正しく機能しますが、 100 (最小精度)。そのように機能する方法は何ですか?

役に立ちましたか?

解決

使用する DecimalFormat: new DecimalFormat("#.0#####").format(d).

これにより、1〜6桁の数字で数値が生成されます。

以来 DecimalFormat デフォルトのロケールのシンボルを使用します。使用するシンボルを提供する場合があります。

//Format using english symbols, e.g. 100.0 instead of 100,0
new DecimalFormat("#.0#####", DecimalFormatSymbols.getInstance( Locale.ENGLISH )).format(d)

100.0〜100をフォーマットするには、フォーマット文字列を使用します #.######.

ご了承ください DecimalFormat たとえあなたが渡された場合、デフォルトで丸くなります 0.9999999 出力を取得します 1. 。取得したい場合 0.999999 代わりに、別の丸めモードを提供します。

DecimalFormat formatter = new DecimalFormat("#.######", DecimalFormatSymbols.getInstance( Locale.ENGLISH ));
formatter.setRoundingMode( RoundingMode.DOWN );
String s = formatter.format(d);

他のヒント

これは、機能する安価なハックです(丸めの問題を導入しません):

String string = String.format("%.6f", d).replaceAll("(\\.\\d+?)0*$", "$1");

String.format("%.0", d) 小数点以下の場所は与えません

-また-

String.format("%d", (int)Math.round(f))

あなたはただ作ることはできませんでした setPrecision このような機能

private static String setPrecision(double amt, int precision){
   return String.format("%." + precision + "f", amt);
}

それからもちろんそれを呼びます

setPrecision(variable, 2); //

明らかに、丸くするために、またはそれが必要なものは何でも、それを調整することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top