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

tif*_*i90 7 java rounding

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

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

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

String.format("%.4g", 0.1234712)
Run Code Online (Sandbox Code Playgroud)

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

0.1235
Run Code Online (Sandbox Code Playgroud)

但是当小数点后有零时:

String.format("%.4g", 0.000987654321)
Run Code Online (Sandbox Code Playgroud)

这将返回:

0,0009877
Run Code Online (Sandbox Code Playgroud)

看起来该函数忽略了数字中的前导零。

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

hev*_*ev1 12

使用%.4f执行您想要的四舍五入。此格式说明符表示小数点后 4 位的浮点值。为此使用半向上舍入,这意味着如果要考虑的最后一位数字大于或等于 5,则将向上舍入,任何其他情况将导致向下舍入。

String.format("%.4f", 0.000987654321);
Run Code Online (Sandbox Code Playgroud)

演示

%g格式说明用于指示如何在科学记数法许多显著的数字显示。前导零并不重要,因此它们被跳过。

  • 你知道“%g”是如何工作的吗?我已经检查了 [Formatter Javadocs](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html),但我仍然不清楚它的作用。 (3认同)