【发布时间】:2016-02-20 03:30:44
【问题描述】:
我想了解这段代码中的 i 是如何最终变成 99999904 的?
long i = (long)(99999900f);
System.out.println(i);
我知道浮点数是用小数存储的,并不是它们看起来的确切值,但我不明白这会如何导致第一个数字是 4 而不是 9 或最终会四舍五入的东西99999900?
【问题讨论】:
-
试试
System.out.println(99999900f); -
9.9999904E7 最短的评论曾经如此清楚地解释过!所有浮点数都以这种格式存储吗?即小数点前有1位数字?谢谢
-
没关系,刚刚测试了一对,似乎随着数字的增长,我们在小数中存储了更多的数字,可能是为了我们可以容纳比浮点数更大的数字。再次感谢
标签: java casting floating-point type-conversion floating-accuracy