Java具有特定精度的双精度字符串

use*_*344 14 java string format double

我想转换doubleString.我希望它尽可能少,最多6位.

所以我找到String.format("%.6f", d)了将我100.0变成的东西100.000000.最大精度可以正常工作,但我希望将其转换为100(最小精度).你知道哪种方法是这样的吗?

Tho*_*mas 20

使用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)
Run Code Online (Sandbox Code Playgroud)

要格式化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);
Run Code Online (Sandbox Code Playgroud)


bre*_*ttw 8

这是一个有效的廉价黑客(并且不会引入任何舍入问题):

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