Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie IS_DUBLE, um PHP -Berechnungsfehler zu vermeiden. Wie löst ich das Genauigkeitsproblem?

Verwenden Sie IS_DUBLE, um PHP -Berechnungsfehler zu vermeiden. Wie löst ich das Genauigkeitsproblem?

M66 2025-06-22

In PHP erleben Floating Point Operations häufig einen Genauigkeitsverlust. Dieses Problem tritt normalerweise zusätzlich Subtraktion, Multiplikation und Abteilungsvorgänge von schwimmenden Punktzahlen auf, insbesondere wenn die Zahlen größer oder kleiner sind. Dieser Fehler wird durch die Einschränkung der Darstellung von schwimmenden Punkten im Computer verursacht. Oft müssen wir wissen, wie wir diesen Fehler beurteilen und vermeiden können.

Was ist Floating Point -Berechnungsfehler?

Der Berechnungsfehler der schwimmenden Punktzahl liegt daran, dass der Computer bestimmte Werte beim Speichern der schwimmenden Punktzahl nicht genau darstellen kann. In PHP sind schwimmende Punkte nicht immer vollständig genau. Bei der Berechnung von 0,1 + 0,2 ist das Ergebnis beispielsweise nicht genau 0,3 , sondern ein Wert, der sehr nahe bei 0,3 liegt. Normalerweise ist dieser Fehler für gewöhnliche Anwendungen minimal, aber dieses Problem ist in Szenarien, in denen Berechnungen mit hoher Präzision erforderlich sind, besonders hervorragend.

Verwenden Sie IS_DUBLE , um den Typ zu bestimmen

In PHP ist IS_DOUBLE eine Funktion, mit der festgestellt wird, ob eine Variable eine schwimmende Punktzahl ist (Doppelart). Durch diese Funktion können wir sicherstellen, dass die schwimmende Punktzahl genau betrieben wird und Fehler vermeiden, die durch Nichtübereinstimmung in Datentypen verursacht werden.

Codebeispiel

 <?php
$var1 = 0.1 + 0.2;
$var2 = 0.3;

if (is_double($var1) && is_double($var2)) {
    echo "Both variables are floating point numbers.\n";
    if ($var1 == $var2) {
        echo "The two numbers are equal.\n";
    } else {
        echo "The two numbers are NOT equal.\n";
    }
}
?>

In diesem Code verwenden wir IS_DOUBLE , um festzustellen, ob $ var1 und $ var2 schwimmende Punkte sind. Wir vergleichen dann die beiden Werte und die Ausgabe, ob sie gleich sind oder nicht. Aufgrund der Speichergenauigkeit von schwimmenden Punkten sind sie normalerweise nicht gleich.

Wie geht es mit dem Problem der schwimmenden Punktgenauigkeit um?

Um Fehler zu vermeiden, die durch schwimmende Punkte verursacht werden, verwenden wir normalerweise die folgenden Methoden, um mit ihnen umzugehen:

  1. Rundung verwenden : Runden Sie das Berechnungsergebnis auf die angegebene Anzahl von Dezimalstellen um und verringern die Auswirkungen von schwimmenden Punktfehlern.

     <?php
    $result = 0.1 + 0.2;
    echo round($result, 2);  // Ausgabe 0.3
    ?>
    
  2. Mithilfe der BCMATH- Erweiterung : PHP bietet BCMATH -Erweiterung für hochpräzise schwimmende Punktberechnungen, die für die Berechnung von Szenarien mit hoher Genauigkeit geeignet sind.

     <?php
    echo bcadd('0.1', '0.2', 2);  // Ausgabe 0.30
    ?>
    
  3. Toleranz wird beim Vergleich von schwimmenden Punkten verwendet : Aufgrund des schwebenden Punktfehlerproblems können wir einen kleinen Toleranzwert festlegen. Beim Vergleich von zwei schwimmenden Punkten werden sie als gleich angesehen, wenn ihre Differenz geringer ist als der Toleranzwert.

     <?php
    $epsilon = 0.00001;
    if (abs($var1 - $var2) < $epsilon) {
        echo "The two numbers are considered equal within the tolerance.\n";
    } else {
        echo "The two numbers are NOT equal.\n";
    }
    ?>
    

abschließend

Der Berechnungsfehler der schwimmenden Punkte in PHP wird durch die Einschränkungen der Computerdarstellung verursacht. Durch die Beurteilung des variablen Typs mit is_double können wir sicherstellen, dass wir den schwimmenden Punkt ordnungsgemäß verarbeiten. Gleichzeitig können Rundung, Berechnungsfunktionen oder Vergleichstoleranzen mit hoher Präzisionsfehler effektiv vermeiden, die durch Probleme mit der Genauigkeit von schwimmenden Punkten verursacht werden.

Obwohl dieses Genauigkeitsproblem gering ist, kann dies zu schwerwiegenden Folgen in einigen Geschäftsszenarien (wie Finanzcomputer, wissenschaftlicher Computing usw.) führen. Wenn wir schwimmende Punktberechnungen durchführen, müssen wir daher vorsichtig sein, um die Genauigkeit der Ergebnisse zu gewährleisten.