java - 在 for 循环中使用 Double.POSITIVE_INFINITY (Java)

标签 java for-loop infinity

以下代码将如何表现,尤其是当双计数器达到其极限 ((2-2^-52)·2^1023) 时?

for (double i = 0; i < Double.POSITIVE_INFINITY; i++){
    //do something
}

这段代码会按预期运行(永远循环)还是会在某个时候失败,为什么?

谢谢。

最佳答案

在某些时候,i++ 将不再有任何效果,因为对于非常大的 i 值,连续的 double 值相距很远。

因此这是一个无限循环。

要证明 doublei == 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/

相关文章:

java - 在java中存储时间的最佳方式,格式为HH :MM

java - Null/Object和Null/Null比较效率

java - 关于让这些列对齐(Java)有什么想法吗?

java - Java for 循环中的列表列表

c++ - 无穷大的 float 是否满足这些方程?

javascript - 添加到 Number.MAX_VALUE

css - 使 div 向左延伸到无穷大

java - 如何在 IntelliJ 上运行外部构建的项目?

java - 在 Java 中查找素数

javascript - 使用随机生成的值检查数组中的重复项