Gleitkomma-Berechnungsgenauigkeit in PHP: Warum es schwierig ist und wie man es überwindet
Bei der Arbeit mit Gleitkommazahlen in PHP ist es von entscheidender Bedeutung sich ihrer inhärenten Genauigkeitsbeschränkungen bewusst zu sein. Wie durch das Snippet gezeigt:
<br>$fooValue = 100.68;<br>$cowValue = 100.67;</p> <p>$diffValue = $fooValue - $cowValue;<br> if ($diffValue <= 0.01) {</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">echo("success");
} else {
echo("error");
}
Sie werden vielleicht überrascht sein um festzustellen, dass dies einen „Fehler“ ausgibt, obwohl die Differenz zwischen den Werten weniger als 0,01 beträgt. Dieses Verhalten ist auf die Tatsache zurückzuführen, dass Gleitkommazahlen in PHP und in der Tat in allen Computersystemen auf binären Darstellungen basieren, was zu einem potenziellen Präzisionsverlust bei der Konvertierung führt.
Um dieser Herausforderung zu begegnen, ist es ratsam, sich nicht darauf zu verlassen zur Gleitkomma-Arithmetik, wenn absolute Präzision erforderlich ist. Es gibt zwei Hauptansätze, die Sie in Betracht ziehen können:
1. Nutzen Sie die BC Math- oder GMP-Bibliothek:
2. Verstehen Sie die Auswirkungen und mögliche Problemumgehungen:
Das obige ist der detaillierte Inhalt vonWarum führt die Gleitkomma-Arithmetik von PHP zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!