为什么以下Java代码打印输出2342245.75000000
而不是2342245.80000000
?
float n=2342245.8f;
System.out.printf("%.8f\n",n);
输出:
2342245.75000000
最佳答案
答案是2342245.8f == 2342245.75f
。它们是相同的浮点数;只是两个不同的十进制表示形式。浮点数在该大小上的精度使得小数部分仅使用两位。因此它下面的下一个浮点数是2342245.5f
,上面的下一个浮点数是2342246.0f
。这两个数字之间没有其他浮点数。
您在屏幕上看到的内容仅是字符串格式的区别:2342245.8
是最短的字符串,将四舍五入到该浮点数,因此String.valueOf
返回的就是它,因此,如果您只是做System.out.println
。但是2342245.75
是一种更准确的小数表示形式,由printf
方法使用,因为您告诉该方法使用更多的小数位。
关于java - 请在以下Java代码中指定给定输出的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59351214/