Java-带浮点数的无限while循环[重复]

问题描述 投票:6回答:1

我目前是学习java浮点数的人。我知道,一个浮动对象有一定数量的重要对象。我也知道,浮点数在Java中表示为-1或1 * num * 10 ^ x。其中num是数字,10 ^ x是十进制“点”。但是在这里,我们所占的比例并不大。这里怎么可能发生无限循环?

具有无限循环的代码:

float f = 123456789;
while (f-- > 0) {
System.out.println(f);
}
java while-loop infinite-loop
1个回答
4
投票
System.out.println(1.23456792E8f); System.out.println(1.23456792E8f - 1);

数字有什么特别之处,为什么执行从那里停止?这是因为123456789的浮点数表示为1.23456792E8。由于缺乏浮点数的精度,这已经给我们带来至少3的差距。使用double而不是float可以使程序完成,但是使用更高的数字会出现此问题。

© www.soinside.com 2019 - 2024. All rights reserved.