浮点数转换为int以获取大值

我只有一个基本问题,为什么以下陈述之间存在差异?

System.out.printf("%.2f n", 55050000.41f);
System.out.printf("%.2f n", 50.41f);

输出

55050000.00 
50.41 

第一条语句删除了一个十进制值,为什么不删除第二条语句?

回答

默认情况下,Java 中的浮点数转换为 64 位双精度数,但由于您使用的是 f 后缀,因此该数字将被解释为 32 位浮点数。

这个数字太大了,在不损失精度的情况下不适合 32 位,而 55050000 是最接近的数字。

你可以在这里玩花车。如果您更改最后一位,您可以看到数字增加了 4。

除非空间有限,否则您可能不想使用 f 后缀。


以上是浮点数转换为int以获取大值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>