即使你改變你的代碼
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 –