Au-delà des réels, l'aventure continue...

Magazine
Marque
GNU/Linux Magazine
Numéro
113
Mois de parution
février 2009


Résumé
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 0.8*10, c'est-à-dire 8. Si vous...

Cet article est réservé aux abonnés. Il vous reste 94% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite