Heim > Artikel > Backend-Entwicklung > Kann die php.ini-Präzisionseinstellung von PHP genaue zweistellige Geldberechnungen garantieren?
Gleitkommaberechnungen können aufgrund der binären Darstellung der meisten Brüche ungenau sein. Mit der php.ini-Einstellung für Präzision können Sie die Anzahl der Stellen angeben, auf die PHP Gleitkommawerte berechnet.
Frage 1: Kann das Ist eine Problemumgehung für präzise zweistellige Geldberechnungen sinnvoll?
Antwort 1: Nein. Die php.ini-Präzisionseinstellung garantiert keine genauen zweistelligen Berechnungen, da die Präzisionslänge dabei zunehmen kann Berechnungen.
Frage 2: Können Sie ein Beispiel nennen, bei dem die Problemumgehung fehlschlägt?
Beispiel:
ini_set('precision', 8); $a = 5.88; // cost per kg $q = 2.49; // quantity purchased (2.49 kg) $b = $a * 0.01; // 10% discount on first kg echo ($a * $q) - $b; // result not precisely two digits
Frage 3: Welcher php.ini.precision-Wert ist für zweistellige Geldberechnungen geeignet? Geldberechnungen?
Antwort 3: Die Verwendung der php.ini-Präzision für Finanzberechnungen wird nicht empfohlen. Erwägen Sie alternative Lösungen wie bcmmath oder number_format.
Beispielcode:
ini_set('precision', 20); // set to 20 $a = 342349.23; $b = 341765.07; echo $a - $b, PHP_EOL; echo floatval(round($a - $b, 2)), PHP_EOL; echo number_format($a - $b, 2), PHP_EOL; echo bcsub($a, $b, 2), PHP_EOL;
Ausgabe:
584.15999999997438863 584.15999999999996817 // round is not reliable 584.16 584.15 // bcsub is more precise with precision=20
Fazit:
Das Vertrauen auf den php.ini-Präzisions-Workaround ist für präzise zweistellige Berechnungen unzuverlässig. Erwägen Sie die Verwendung von bcmmath oder number_format für genaue Finanzberechnungen.
Frage 1: Wird die Problemumgehung für Zahlen zwischen 0 und 999999,99 fehlschlagen?
Antwort 1: Ein vollständiger Test ist aufgrund der Vielzahl an Kombinationen nicht praktikabel. Ein einfacher Test mit 0,19 0,16 ... 0,01 führt jedoch zu einem unerwarteten Ergebnis (1,0408341E-17) mit einer auf 8 eingestellten Genauigkeit, was darauf hindeutet, dass die Problemumgehung nicht vollständig zuverlässig ist.
Frage 2:Wie können wir abschätzen, wann die Problemumgehung fehlschlägt?
Antwort 2:Es gibt zwar mathematische Formeln, diese können jedoch komplex und für die Bestimmung von Fehlerpunkten nicht immer praktisch sein.
Das obige ist der detaillierte Inhalt vonKann die php.ini-Präzisionseinstellung von PHP genaue zweistellige Geldberechnungen garantieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!