web-dev-qa-db-ja.com

Java doubleから特定の精度の文字列

doubleStringに変換したいと思います。できるだけ桁数を少なくし、最大6桁にします。

そこで、_100.0_を_100.000000_に変換するString.format("%.6f", d)を見つけました。最大精度は正しく機能しますが、_100_(最小精度)に変換したいと思います。どのような方法がそのように機能しているのか分かりましたか?

14
user3009344

これは機能する安価なハックです(そして丸めの問題は発生しません):

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

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

-または-

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

2
Paul Samsotha

このようなsetPrecision関数を作成できませんでした

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

そしてもちろんそれを呼ぶ

setPrecision(variable, 2); //

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

1
Travis