value
以下では、最大値を割り当ててから、可能なLong
最小の正のDouble
値を追加しようとしています。
次に、値が最大値より大きいことを検出しようとしLong
ます。
Double value = new Long(Long.MAX_VALUE).doubleValue();
value += Double.MIN_VALUE;
if (value < -(new Long(Long.MAX_VALUE).doubleValue()) || value > new Long(Long.MAX_VALUE).doubleValue()) {
// Expecting code here to execute, but it doesn't.
}
関連する値を調査するとvalue
、の最終的な値は次のようになります。
9.223372036854776E18
= 9223372036854776000
値をLong.MAX_VALUE
持っている間
9223372036854775807
これらのショーを比較するとvalue
、予想どおりに大きくなります。
9223372036854776000 (value)
9223372036854775807 (Long.MAX_VALUE)
if
ステートメントがこれを検出できない理由を誰かが説明できますか?
心から感謝します。