关于String.format()用数字的前导零四舍五入的双精度数:String.format()用数字的前导零四舍五入的双精度-Java

String.format() rounding a double with leading zeros in digits - Java

我已经在评论中问过这个问题了:

如何在Java中将数字四舍五入到小数点后n位。

我正在尝试将双精度型转换为具有固定小数位数的字符串。在上面的问题中,解决方案非常简单。
使用

1
String.format("%.4g", 0.1234712)

我得到了预期的结果,一个四舍五入到四位数的数字:

1
0.1235

但是当小数点后有零时:

1
String.format("%.4g", 0.000987654321)

这将返回:

1
0,0009877

该函数似乎忽略了数字中的前导零。

我知道我可以定义一个新的DecimalFormat,但是我想了解这个问题。并了解一些语法。


使用%.4f进行所需的舍入。此格式说明符表示一个小数点后4位数字的浮点值。半上舍入用于此操作,这意味着如果要考虑的最后一位数字大于或等于5,则将四舍五入,而其他情况将导致四舍五入。

1
String.format("%.4f", 0.000987654321);

演示

%g格式说明符用于指示科学计数法中显示了多少个有效数字。前导零并不重要,因此会被跳过。