なぜ自動ボクシング/アンボックス化がここで失敗しているのですか?
-
22-10-2019 - |
質問
以下のプログラムでは、結果があります 0.0
未満と見なされます Double.MIN_VALUE
. 。なんで?
解決策があります(一緒に作業します Doubles
のみ使用してください compareTo
)そして、私はここで解散が失敗している理由を理解したいと思います。
import java.util.Date;
import java.util.Calendar;
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
double max = 99999.9999;
double min = Double.MIN_VALUE;
Double test = 0.0;
System.out.println(max > test); // expect true; is true
System.out.println(test > min); // expect true; is false
}
}
解決
他のヒント
あなたは読むべきです double.min_value 仕様。それは可能な最小値であるが正の二重値であり、それは0.0を超えることを意味します。
A constant holding the smallest positive nonzero value of type double, 2-1074.
It is equal to the hexadecimal floating-point literal 0x0.0000000000001P-1022
and also equal to Double.longBitsToDouble(0x1L).
Double.MIN_VALUE = 4.9E-324
これはまだ正の数です。私はあなたが探していると思います min = - Double.MAX_VALUE
私によると、オートボクシングには問題ありません。おそらく、<and>オペレーターでうまく機能するはずのdouble.negative_infinityまたはdouble.positive_infinityのようなものを使用する必要があるだけです。たとえば、それに注意してください
-Double.MAX_VALUE > Double.NEGATIVE_INFINITY本当です!
所属していません StackOverflow