提问者:小点点

string.format()以数字为前导零舍入双精度-Java


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

如何将一个数四舍五入到Java小数点后n位。

我在试着把一个double转换成一个小数位数固定的字符串。 在上面的问题中,解决方法相当简单。 使用时

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

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

0.1435

但当小数点后面有零时:

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

这将返回:

0,0009877

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

我知道我可以定义一个新的DecimalFormat,但是我想要理解这个问题。 并学习一点语法。


共1个答案

匿名用户

使用%.4f执行所需的舍入。 此格式说明符指示小数点后有4位数字的浮点值。 对此使用上半舍入,意思是如果要考虑的最后一个数字大于或等于五,它将向上舍入,任何其他情况都将导致向下舍入。

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

演示

%g格式说明符用于指示显示科学记数法中的多少个有效数字。 前导零不重要,因此跳过它们。