我目前是学习java浮点数的人。我知道,一个浮动对象有一定数量的重要对象。我也知道,浮点数在Java中表示为-1或1 * num * 10 ^ x。其中num是数字,10 ^ x是十进制“点”。但是在这里,我们所占的比例并不大。这里怎么可能发生无限循环?
具有无限循环的代码:
float f = 123456789;
while (f-- > 0) {
System.out.println(f);
}
System.out.println(1.23456792E8f);
System.out.println(1.23456792E8f - 1);
数字有什么特别之处,为什么执行从那里停止?这是因为123456789
的浮点数表示为1.23456792E8
。由于缺乏浮点数的精度,这已经给我们带来至少3
的差距。使用double
而不是float
可以使程序完成,但是使用更高的数字会出现此问题。