Erreur de calcul en php
Résolu
hpmousse
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Doctor C Messages postés 627 Date d'inscription Statut Membre Dernière intervention -
Doctor C Messages postés 627 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis tombé sur cette erreur de calcul par PHP :
[code]<?php
$a = 0.7;
$b = 7;
$c = $a * $b;
$d = 4.9;
print $d - $c;
?>[/code]
et le résultat (qui devrait être 0 pour ceux qui n'auraient pas suivi)
8.881784197E-16
étonnant non ?
Quelqu'un pourrait-il m'expliquer cela ?
Je suis tombé sur cette erreur de calcul par PHP :
[code]<?php
$a = 0.7;
$b = 7;
$c = $a * $b;
$d = 4.9;
print $d - $c;
?>[/code]
et le résultat (qui devrait être 0 pour ceux qui n'auraient pas suivi)
8.881784197E-16
étonnant non ?
Quelqu'un pourrait-il m'expliquer cela ?
A voir également:
- Erreur de calcul en php
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Erreur 0x80070643 - Accueil - Windows
- Logiciel gratuit calcul surface m2 - Télécharger - Outils professionnels
3 réponses
Des nombres à virgules comme 0,1 et 0,7 n'ont pas une représentation exacte dans le langage de l'ordinateur, i. e. en base 2 (même s'ils sont tout beau et tout rond en base 10).
Tout cela veut dire qu'en fait, ta variable $c est plutôt le résultat de quelque chose comme:
$c = 0.699999999999999999... * 7;
$c = 4,899999999999999999...
$d = 4.9
0.00000000000000008881784197 = $d - $c
= 8.881784197E-16
Echo "Lima Mike Alfa";
Tout cela veut dire qu'en fait, ta variable $c est plutôt le résultat de quelque chose comme:
$c = 0.699999999999999999... * 7;
$c = 4,899999999999999999...
$d = 4.9
0.00000000000000008881784197 = $d - $c
= 8.881784197E-16
Echo "Lima Mike Alfa";
merci Doctor C
Je me doutais bien d'un truc comme ça.
Comment écrit-t'on les décimales en base 2 ?
comme 0.7
Je me doutais bien d'un truc comme ça.
Comment écrit-t'on les décimales en base 2 ?
comme 0.7
Des décimales en binaire, c'est pas super simple.
J'ai pas trop envie de tenter de l'expliquer (surtout que je n'y comprend pas tous les détails).
Voici l'explication de wikipedia: https://fr.wikipedia.org/wiki/IEEE_754
J'ai pas trop envie de tenter de l'expliquer (surtout que je n'y comprend pas tous les détails).
Voici l'explication de wikipedia: https://fr.wikipedia.org/wiki/IEEE_754