Nombres flottants en informatique

Sébastien Sauvage publie un rappel fort utile pour tout les codeurs débutant qui seraient perturbés par la gestion des nombres décimaux dans leur langage de programmation préféré. Petit commentaire supplémentaire sur la manière d'éviter les problèmes en php et en javascript.

Digest pour ceuses qui ne lirait pas le billet de sebSauvage : les ordinateurs stockent les données en binaire ; soit une approximation binaire des nombre décimaux (fractions) dont le diviseur n'est pas un multiple de 2. Dés lors, le nombre 1.7 ne sera pas égal à l'opération (0.8 + 0.9).

Dans des cas triviaux d'utilisation de flottants (la comptabilité n'en fait pas partie :-), la précision nécessaire est limitée. Il est donc acceptable de créer des arrondis.

$a = round(1.7, 1);
$b = round(0.8 + 0.9, 1);
if ($a === $b) {
    echo 'a et b sont égaux';
} else {
    echo 'a et b sont différents';
}
// => a et b sont égaux
Utilisation d'arrondis pour assurer l'égalité de décimaux en PHP.
var a = Math.round(1.7*100)/100,
    b = Math.round((0.8+0.9)*100)/100;
if (a === b) {
    console.log('a et b sont égaux');
} else {
    console.log('a et b sont différents');
}
// => a et b sont égaux
Utilisation d'arrondis pour assurer l'égalité de décimaux en javascript.