J'ai une question qui découle d'une autre question sur la précision des nombres flottants.
Je sais que les nombres flottants ne peuvent pas toujours être représentés avec précision et qu'ils sont donc stockés sous la forme du nombre flottant le plus proche possible.
Ma question porte en fait sur la différence de représentation de float
y double
.
D'où vient cette question ?
Supposons que je le fasse :
System.out.println(.475d+.075d);
alors la sortie ne serait pas 0.55
mais 0.549999
(sur ma machine)
Cependant, quand je le fais :
System.out.println(.475f+.075f);
J'obtiens la bonne réponse, c'est-à-dire 0.55
(un peu inattendu pour moi)
Jusqu'à présent, j'avais l'impression que double
a plus de précision( double sera plus précis jusqu'à un plus grand nombre de décimales. ) que float
. Ainsi, si un double ne peut être représenté avec précision, sa représentation flottante équivalente sera également stockée de manière imprécise.
Cependant, les résultats que j'ai obtenus sont un peu troublants pour moi. Je suis confus si :
- J'ai une mauvaise compréhension de ce que
precision
signifie ? -
float
ydouble
sont représentés différemment, hormis le fait que le double a plus de bits ?