OVH Cloud OVH Cloud

Soustraction de float

1 réponse
Avatar
Nono
Bonjour,

J'ai un probléme de soustraction:

float a = (float) 1.747;
float b = (float) 1.721;
float c = a - b;
System.out.println("c = " + c);

Resultat :
c = 0.026000023
J'ai essayé avec JDK13 et 14

Que faut il faire quand on a bcp de calcul?
Pourquoi cette erreur n'est pas corrigé?

Merci,
Bruno

1 réponse

Avatar
Nicolas Delsaux
Le 28.01 2004, Nono s'est levé et s'est dit : "tiens, si j'écrivais aux
mecs de fr.comp.lang.java ?"

Bonjour,

Que faut il faire quand on a bcp de calcul?
Pourquoi cette erreur n'est pas corrigé?


Apprends d'abord comment sont stockés tes nombres dans ta machine,
puis vas voir dans la FAQ et les archives du newsgroup (où cette question a
déja été posée un million de fois).
Un petit indice ?
Le float est stocké dans des bits binaires, pour lesquels 1+1 vaut 10, et
où les soustractions sont parfois un peu moins bien fichues.
Et au besoin, jette un coup d'oeil au NumberFormat.
Pour finir, pour les mathématiques exactes, les classes BigDecimal et
BigInteger sont faites pour toi.

Merci,
Bruno







--
Nicolas Delsaux
PM > L'un prône la franchouillardise grasse, et l'autre le plaisir
PM > sensuel par la décharge d'armes lourdes, donc un américanisme gras
in fras, Taxi vs Terminator