Question

Dans le programme ci-dessous, le résultat est que 0.0 est considéré comme inférieur à Double.MIN_VALUE. Pourquoi?

Nous avons une solution (travail avec Doubles seulement et l'utilisation compareTo) et je veux comprendre pourquoi unboxing est un échec ici.

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
  }
}
Était-ce utile?

La solution

Selon le Javadocs :

MIN_VALUE

Une constante de maintien la plus petite valeur non nulle positive du type à double, 2 -1074 .

En d'autres termes, il est plus grand que 0.

Autres conseils

Vous devriez lire le Double.MIN_VALUE spécification. Il est un minimum possible mais la valeur double positif qui signifie qu'il est plus grand que 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 qui est toujours un nombre positif. Je pense que vous cherchez min = - Double.MAX_VALUE

Selon moi autoboxing n'a pas de problème. Peut-être vous avez simplement besoin d'utiliser quelque chose comme Double.NEGATIVE_INFINITY ou Double.POSITIVE_INFINITY qui devrait bien fonctionner avec les opérateurs . Par exemple noter que

-Double.MAX_VALUE > Double.NEGATIVE_INFINITY
est vrai!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top