N'avez-vous jamais constater d'aberration dans vos calculs sur les réels ? Ne vous êtes-vous jamais surpris à réaliser correctement des opérations qui étaient pourtant fausses dans vos programmes, à rechercher des heures durant pourquoi vous aviez une erreur d'arrondi ? Je vous propose dans cet article de partir à l'aventure, au cœur de votre ordinateur, pour comprendre comment sont traités les réels en machine.
Les réels sont partout ! En effet, les nombres à virgule sont omniprésents en mathématique. On pourrait citer le célèbre π (pi) qui vaut 3.14159... mais, avec un ordinateur, un simple décimal tel que 0.1 peut entraîner des erreurs qui peuvent être, suivant le contexte, désastreuses. Pensez à un missile chasseur de missile qui effectuerait une erreur de précision de l'ordre de 0.34s. Il passerait loin du missile qu'il est censé intercepter. Ce scénario s'est produit en 1991 avec un missile Patriote lors de la Guerre du Golfe [1]. Il est indispensable de comprendre le codage des réels en machine pour en tenir compte lors d'un développement et ne pas faire ainsi des erreurs qui pourraient être parfois simplement évitées.
Dans cet article, je m'attacherai à résoudre pas à pas le problème suivant, énoncé en PHP :
<?php
print (int) ((0.7+0.1)*10);
?>
Nous demandons l'affichage de la partie entière du calcul (0.7+0.1)*10, soit...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première