Warum fällt hier Autoboxing/Unboxing?
-
22-10-2019 - |
Frage
Im folgenden Programm ist das Ergebnis das 0.0
wird als weniger als angesehen als Double.MIN_VALUE
. Wieso den?
Wir haben eine Lösung (arbeiten mit Doubles
nur und benutze compareTo
) Und ich möchte verstehen, warum das Unboxing hier fehlschlägt.
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
}
}
Lösung
Laut dem Javadocs :
Min_value
Eine konstante Haltung des kleinsten positiven Werts ungleich Null des Typs doppelt, 2-1074.
Mit anderen Worten, es ist größer als 0.
Andere Tipps
Sie sollten die lesen Double.min_value Spezifikation. Es ist ein minimal mögliches, aber positiver Doppelwert, was bedeutet, dass er größer als 0,0 ist.
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
Das ist immer noch eine positive Zahl. Ich denke, Sie suchen nach min = - Double.MAX_VALUE
Laut mir hat Autoboxing keine Probleme. Vielleicht müssen Sie einfach so etwas wie doppelt verwenden. Zum Beispiel beachten Sie das
-Double.MAX_VALUE > Double.NEGATIVE_INFINITYist wahr!