J'ai deux variables y et z de type double
et long
. Mon problème est que l'opérateur d'égalité retourne vrai pour eux même s'ils ont des valeurs inégales comme vous pouvez le voir dans l'extrait de code ci-dessous.L'opérateur d'égalité renvoie vrai pour des valeurs inégales
public class Test {
public static void main(String[] args) throws Exception {
double y = (double) Long.MAX_VALUE;
System.out.println(y);//9.223372036854776E18
long z = Long.MAX_VALUE - 1;
System.out.println(z);//9223372036854775806
System.out.println(y == z);//=============true
}
}
Ma requête est si z a une valeur inférieure à y, pourquoi y == z se réalise.
Quelqu'un peut-il expliquer ce comportement?
Essayé l'impression de ces valeurs? – GhostCat
Oui, les deux sont différents –
Toute valeur longue supérieure à '2^53 - 1' ne peut pas être représentée exactement comme un double. –