以下代码将如何表现,特别是当双计数器达到其极限((2-2^-52)·2^1023)?
for (double i = 0; i < Double.POSITIVE_INFINITY; i++){
//do something
}这段代码会像预期的那样运行(永远循环)还是在某个时候失败,为什么呢?
谢谢。
发布于 2015-11-04 18:53:30
在某一时刻,i++将不再产生任何影响,因为对于非常大的i值,连续的double值相距很远。
因此,它是一个无限循环。
为了证明有double值,i == i + 1尝试如下:
for (double i = 1;; i *= 2){
if (i == i + 1) {
System.out.println(i);
break;
}
}印出来
9.007199254740992E15https://stackoverflow.com/questions/33529676
复制相似问题