Java: division incorrecte

Publié le 23 Décembre 2011

Le problème du jour concerne les opérations arithmétiques en Java et plus particulièrement la division:

Commençons avec une question simple: Quel résultat imprime la ligne suivante:

System.out.println(1/4);

Facile pensez-vous, c'est 0.25. Et bien non tout faux: ça affiche 0.

Pourquoi ? Java ne sait pas faire une division aussi simple ? La JVM est buggée ?

Et bien non il faut juste lire la spec java car en fait la division est bien effectuée mais comme c'est une opération sur des int le résultat est également de type int, soit ici 0.

Pour avoir le résultat attendu il faut qu'au moins une des opérandes soit un float ou double, et donc le code devient:

System.out.println(1f/4); // f pour float

On tombe vite dans le piège (même quand on connaît le problème et surtout quand la formule est beaucoup plus complexe).

Rédigé par Bliz

Publié dans #Java

Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article