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
  }
}
War es hilfreich?

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_INFINITY
ist wahr!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top