Heim > Backend-Entwicklung > PHP-Tutorial > Warum sind meine PHP-Gleitkommaberechnungen ungenau?

Warum sind meine PHP-Gleitkommaberechnungen ungenau?

DDD
Freigeben: 2024-12-21 14:45:10
Original
560 Leute haben es durchsucht

Why Are My PHP Floating-Point Calculations Inaccurate?

Gleitkomma-Ungenauigkeit in PHP

Sind Sie bei der Ausführung von Gleitkomma-Arithmetik in PHP auf unerwartete Ergebnisse gestoßen? Dieses Problem entsteht aufgrund der inhärenten Natur der Gleitkommadarstellung in Computern.

Gleitkommazahlen sind Binärzahlen mit begrenzter Genauigkeit, die zu Diskrepanzen zwischen mathematischen Erwartungen und tatsächlichen Ergebnissen führen. Dies bedeutet, dass im Gegensatz zur Arithmetik mit reellen Zahlen bei der Gleitkommaarithmetik für bestimmte Werte Ungenauigkeiten wie (a b)-b != a auftreten können.

Betrachten Sie zur Veranschaulichung den PHP-Code:

$a = '35';
$b = '-34.99';
echo ($a + $b);
Nach dem Login kopieren

Die Ausgabe beträgt 0,009999999999998, während man 0,01 erwarten würde. Diese Abweichung tritt auf, weil sowohl 34,99 als auch 0,01 nicht genau binär dargestellt werden können. Stattdessen werden Näherungen verwendet.

Um dieses Problem zu mildern, können mehrere Ansätze verwendet werden:

  • Runden Sie das Ergebnis mit „round($result, 2)“, um die gewünschte Anzahl an Dezimalstellen zu erhalten Stellen.
  • Verwenden Sie Ganzzahlen anstelle von Gleitkommazahlen. Wenn Sie mit Währungen arbeiten, speichern Sie Werte in Cent (z. B. 35,00 $ als 3500) und dividieren Sie das Ergebnis durch 100.

Während PHP keinen Dezimaldatentyp hat, bieten Rundungsfunktionen und Ganzzahlmanipulationstechniken effektive Problemumgehungen für die Handhabung Gleitkomma-Ungenauigkeit.

Das obige ist der detaillierte Inhalt vonWarum sind meine PHP-Gleitkommaberechnungen ungenau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage