String.format() rounding a double with leading zeros in digits - Java
我已经在评论中问过这个问题了:
如何在Java中将数字四舍五入到小数点后n位。
我正在尝试将双精度型转换为具有固定小数位数的字符串。在上面的问题中,解决方案非常简单。
使用
时
1
| String. format("%.4g", 0.1234712) |
我得到了预期的结果,一个四舍五入到四位数的数字:
但是当小数点后有零时:
1
| String. format("%.4g", 0.000987654321) |
这将返回:
该函数似乎忽略了数字中的前导零。
我知道我可以定义一个新的DecimalFormat,但是我想了解这个问题。并了解一些语法。
- 0.1234712对您真的舍入为0.1435吗?
-
@RiaD可能是拼写错误。
使用%.4f进行所需的舍入。此格式说明符表示一个小数点后4位数字的浮点值。半上舍入用于此操作,这意味着如果要考虑的最后一位数字大于或等于5,则将四舍五入,而其他情况将导致四舍五入。
1
| String. format("%.4f", 0.000987654321); |
演示
%g格式说明符用于指示科学计数法中显示了多少个有效数字。前导零并不重要,因此会被跳过。
- 您是否知道%g的工作原理?我已经检查了Formatter Javadocs,但对它的作用仍不清楚。
-
不必后悔,我很好奇:)
-
感谢您的回答和解释。这确实帮助我理解了。
-
@ tifi90很高兴为您提供帮助。