int i = 0;
double n = 1.24;
for (; int(n) != n; i++) {
n *= 10;
}
为什么会进入死循环?不是应该在循环两次后停止吗?
最佳答案
1.24
不能完全表示为 double
。如果您检查 n
的初始值,您会发现它是 1.239999999999999991118215802998747...
至于为什么循环不停,一旦n
超过最大double
的值,就自动转为+Infinity
,这是一个特殊的浮点值。一旦达到该点,n
将停止更改并且 int(n) != n
永远无法满足。
关于c++ - 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914601/