Heim >Backend-Entwicklung >PHP-Tutorial >Exakte Division mit der Funktion fdiv() in PHP8
Mit der kontinuierlichen Weiterentwicklung der Computertechnologie sind Zahlenoperationen zu einem der grundlegendsten und wichtigsten Inhalte in Computern geworden. Bei der Durchführung von Divisionsoperationen von Gleitkommazahlen können jedoch aufgrund der Genauigkeit der Computerspeicherung von Gleitkommazahlen große Fehler auftreten. Um dieses Problem zu lösen, wurde in PHP8 die Funktion fdiv() für präzise Divisionsoperationen hinzugefügt. Das Syntaxformat der Funktion
fdiv() lautet:
fdiv(float $dividend, float $divisor): float
wobei $dividend die Dividende darstellt, $divisor den Divisor darstellt und der Rückgabewert das Ergebnis der Divisionsoperation ist, also der genaue Wert von $dividend dividiert durch $divisor.
Als nächstes schauen wir uns einige konkrete Anwendungsbeispiele an.
Bei der Durchführung von Divisionsoperationen verwenden wir normalerweise den Divisionsoperator „/“, um sie abzuschließen. Wenn wir beispielsweise das Ergebnis der Division von 10 durch 3 berechnen müssen, können wir den folgenden Code verwenden:
$result = 10 / 3; echo $result; // 3.3333333333333
Wenn wir uns den Wert von $result ansehen, werden wir feststellen, dass das Ergebnis 3,3333333333333 ist. Dies ist auf Präzisionsprobleme zurückzuführen Computer speichern Gleitkommazahlen.
Wenn Sie die Funktion fdiv() verwenden, um denselben Vorgang auszuführen, lautet der Code wie folgt:
$result = fdiv(10, 3); echo $result; // 3.3333333333333
Es scheint, dass es keine Änderung gibt, aber tatsächlich führt die Funktion fdiv() einen präziseren Vorgang aus und sorgt so für mehr genaues Ergebnis.
Bei der Division von Gleitkommazahlen stoßen Sie häufig auf einige Extremfälle, z. B. wenn der Divisor 0 ist, der Divisor extrem klein ist usw. In diesen Fällen können reguläre Divisionsoperationen zu Programmausnahmen oder fehlerhaften Ergebnissen führen.
Für den Fall, dass der Divisor 0 ist, wird in PHP eine DivideByZeroError-Ausnahme ausgelöst, sodass das Programm Ausnahmen behandeln muss. Zum Beispiel:
try { $result = fdiv(10, 0); } catch (DivideByZeroError $e) { echo "Error: Cannot divide by 0"; }
In Fällen, in denen der Divisor sehr klein ist, kann es aufgrund der Genauigkeitsbeschränkung der im Computer gespeicherten Gleitkommazahlen zu ungenauen Ergebnissen kommen. In diesem Fall können Sie die Genauigkeit der Berechnung verbessern, indem Sie die Genauigkeit festlegen. Beispielsweise stellen wir das Berechnungsergebnis so ein, dass 20 Dezimalstellen erhalten bleiben:
ini_set('precision', 20); $result = fdiv(10, 0.0000001); echo $result; // 1.0E+8
Sie sehen, dass wir durch die Festlegung der Genauigkeit genauere Berechnungsergebnisse erhalten.
Beim Umgang mit sehr großen Zahlen führt die Verwendung regulärer Divisionsoperationen oft zu sehr großen Fehlern. Zu diesem Zeitpunkt können Sie die präzise Berechnungsfunktion der Funktion fdiv() verwenden, um präzise Divisionsoperationen für extrem große Zahlen durchzuführen. Zum Beispiel müssen wir das Ergebnis der Division von 2 hoch 100 durch 3 berechnen:
$dividend = pow(2, 100); $divisor = 3; $result = fdiv($dividend, $divisor); echo $result; // 6.3382530011411E+29
Mit der Funktion fdiv() erhalten wir ein genaueres Berechnungsergebnis.
Zusammenfassend lässt sich sagen, dass das Aufkommen der Funktion fdiv() es für uns einfacher und genauer macht, Gleitkommazahlen zu dividieren. Sie kann Fehler, die durch die Genauigkeit der Computerspeicherung von Gleitkommazahlen verursacht werden, effektiv vermeiden und die Genauigkeit verbessern und Stabilität des Programmbetriebs.
Das obige ist der detaillierte Inhalt vonExakte Division mit der Funktion fdiv() in PHP8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!