Exemple 2-3-2 a) «Erreur d'arrondi (méthode à éviter)» - Script PHP

Initiation à la programmation avec le langage PHP, §2 Structures de contrôle répétitives

L'autorisation d'exécuter ce script PHP n'est pas accordée.

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport"
	content="width=device-width, initial-scale=1.0">
<meta name="robots" content="NoIndex,NoFollow">
<title>Erreur d'arrondi (méthode à éviter)</title>
</head>
<body>
<?php
/*
	Tant que S est différent de 10, sommer:
	S = 0.2 + 0.2 + 0.2 + ...
*/
$s = 0;
$n = 0;
while ( $s != 10) {
	$s = $s + 0.2;
	$n++;
}
echo '<p>Pour avoir s==10, il faut '
	.$n
	.' termes.</p>';
?>
</body>
</html>

La condition $s==10 n'étant jamais remplie, le programme boucle sans fin.

Les algorithmes que l'on utilise doivent tenir compte des erreurs d'arrondi. Par exemple, le nombre 0.2 comporte, lorsqu'il est converti en base 2, un nombre infini de bits ce qui nécessite qu'il soit tronqué. C'est pourquoi, en ce qui concerne les variables de contrôle, il faut donner la préférence aux variables à valeurs entières. Si l'on doit utiliser une variable de contrôle de type réel (à valeurs non entières), il ne faut jamais la tester avec une égalité.

Contact |  Accueil   >   PHP   >   Initiation