2017-02-11 3 views
1

Ich verstehe nicht, php:Eine einfache Berechnung in PHP .. Ich mache es falsch?

echo -0.01-0.02-0.16+0.01+0.01+0.17; 

Ergebnis 2.7755575615629E-17
richtig = 0!

+0

Bitte lesen Sie 'Warning' Abschnitt in http://php.net/manual/en/language.types.float.php – jetblack

+1

[Lesen, lernen und verstehen] (https://en.wikipedia.org/wiki/Floating_point # Accuracy_problems) Wenn Sie mit Fließkommawerten auf Computern in einer beliebigen Sprache arbeiten, ist dies etwas, was Sie wirklich wissen müssen –

+1

http://floating-point-gui.de/ – Philip

Antwort

3

E-17 bedeutet wirklich x 10^(-17).

Laut dem Computer, der am anderen Ende der Nachkommastellen Gleitkommazahlen von Präzisionsfehler leidet, wird die Berechnung Ihrer Antwort ,00000000000000002775557 ...

Wenn Sie diese Art von Präzision brauchen nicht zu sein, Sie können bis zu einem gewissen Genauigkeit Rundung erzwingen:

echo round(-0.01-0.02-0.16+0.01+0.01+0.17, 8); 
0

Die Antwort, die Sie ist präzise Antwort bekam nach BODMAS Regel, wenn Sie Antwort wollen als verwenden nur round() Funktion von PHP aufrunden. Du wirst deine Antwort bekommen.

echo round(-0.01-0.02-0.16+0.01+0.01+0.17, 8); 
+0

gut danke Sie, Ich verstehe, wenn es sich teilt Aber beim Zählen? Jede Operation Runden? –

+0

willkommen ... wenn Sie es verstehen, dann markieren Sie es als akzeptiert und schließen Sie es. –