即使你改变你的代码
double inf = Double.POSITIVE_INFINITY;
for (double i = 0.0; i < inf; i++) {
}
System.out.println(i);
循环将永远不会结束,因为i
不可能变得比Double.MAX_VALUE
大,Double.MAX_VALUE
仍比Double.POSITIVE_INFINITY
小。
可以通过运行这个片段证明这一点:
if (Double.MAX_VALUE > Double.POSITIVE_INFINITY) {
System.out.println ("max is larger than infinity");
} else {
System.out.println ("nope");
}
,它将打印“不”,因为Double.POSITIVE_INFINITY
比任何可能的双重价值更大。顺便说一句,编译器将System.out.println ("max is larger than infinity");
语句标记为无效代码。
我想这意味着你可以说'Double.POSITIVE_INFINITY' is a true representation of infinity
。
BTW,的POSITIVE_INFINITY
值
public static final double POSITIVE_INFINITY = 1.0/0.0;
因此,由于1.0/0.0实际上是正无穷大,你可以说这是一个无穷大的真实再现。
对于无限的“真实”表示,你是什么意思?该值被定义为'double'类型的无穷大表示。但是你不能在int中存储无穷大;没有值表示int类型的无穷大。 – Jesper
相关:https://stackoverflow.com/questions/33529676/using-double-positive-infinity-in-for-loop-java?rq=1 –