以下代码将如何表现,尤其是当双计数器达到其极限 ((2-2^-52)·2^1023) 时?
for (double i = 0; i < Double.POSITIVE_INFINITY; i++){
//do something
}
这段代码会按预期运行(永远循环)还是会在某个时候失败,为什么?
谢谢。
最佳答案
在某些时候,i++
将不再有任何效果,因为对于非常大的 i
值,连续的 double
值相距很远。
因此这是一个无限循环。
要证明 double
值 i == i + 1
试试这个:
for (double i = 1;; i *= 2){
if (i == i + 1) {
System.out.println(i);
break;
}
}
打印
9.007199254740992E15
关于java - 在 for 循环中使用 Double.POSITIVE_INFINITY (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529676/