Double.POSITIVE_INFINITY 是无穷大的真实表示吗?

1 java infinity

我想知道Java的'Double.POSITIVE_INFINITY'是否是无穷大的真实表示,如果不是,则这段代码中的'i':

public class Infinity {
private static int i;

public static void main(String[] args) {
    double inf = Double.POSITIVE_INFINITY;
    for (i = 0; i < inf; i++) {
      }
    System.out.println(i);
   }
}
Run Code Online (Sandbox Code Playgroud)

曾经被打印过吗?

Bat*_*eba 5

i < inf一直会true; 即i永远不会达到Double.POSITIVE_INFINITY

这是因为int一旦达到 2,147,483,647 就会溢出为负数。

请注意,即使i是一种double类型,您仍然无法获得POSITIVE_INFINITY:这是因为在 2 的 53 次方之后,某些单个增量是无操作的。

  • 没有未定义的行为:它将溢出到“-2,147,483,648”,然后重新开始。 (2认同)