Float (auch FloatFloat, double oder real genannt) kann mit einer der folgenden Syntaxen definiert werden:
<?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?>
Gleitkommazahlendarstellung:
LNUM [0-9]+
DNUM ([0-9]*[.]{LNUM }) | }[.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
Das Wort Die Länge von Gleitkommazahlen ist plattformabhängig, obwohl der Maximalwert normalerweise 1,8e308 mit einer Genauigkeit von 14 Dezimalstellen (64-Bit-IEEE-Format) beträgt.
Warnung
Die Genauigkeit von Gleitkommazahlen ist begrenzt. Obwohl es vom System abhängt, verwendet PHP normalerweise das IEEE 754-Doppelformat, sodass der maximale relative Fehler aufgrund der Rundung 1,11e-16 beträgt. Nicht grundlegende mathematische Operationen können zu größeren Fehlern führen, und die Fehlerfortpflanzung bei der Durchführung zusammengesetzter Operationen muss berücksichtigt werden.
Darüber hinaus können rationale Zahlen wie 0,1 oder 0,7, die unabhängig von der Anzahl der Mantissen genau dezimal dargestellt werden können, durch die intern verwendete Binärzahl nicht genau dargestellt werden und können daher nicht ohne Verlust in Binärzahlen umgewandelt werden ein bisschen Präzision. Dies kann zu verwirrenden Ergebnissen führen: Beispielsweise gibt floor((0.1+0.7)*10) normalerweise 7 statt der erwarteten 8 zurück, da die interne Darstellung des Ergebnisses tatsächlich etwa 7.9999999999999991118... ist.
Vertrauen Sie also niemals darauf, dass das Ergebnis einer Gleitkommazahl bis zur letzten Ziffer genau ist, und vergleichen Sie niemals zwei Gleitkommazahlen auf Gleichheit. Wenn Sie wirklich eine höhere Präzision benötigen, sollten Sie die Funktion „Arbiträre Präzisionsmathematik“ oder die Funktion „gmp“ verwenden.
Eine einfache Erklärung finden Sie auf der Webseite „Floating Point Guide“.
Wenn Sie Informationen darüber wünschen, wann und wie Sie einen String in eine Gleitkommazahl umwandeln, lesen Sie „Converting a String to a Number Festival“. . Bei anderen Werttypen ist die Situation ähnlich wie bei der Konvertierung des Werts in eine Ganzzahl und dann in einen Gleitkommawert. Weitere Informationen finden Sie im Abschnitt „Konvertieren in eine Ganzzahl“. Wenn Sie ab PHP 5 versuchen, ein -Objekt in eine Gleitkommazahl zu konvertieren, wird eine E_NOTICE-Fehlermeldung ausgegeben.
Wie die obige Warnmeldung besagt, besteht aus internen Ausdrucksgründen ein Problem beim Vergleich zweier Gleitkommazahlen auf Gleichheit. Es gibt jedoch Umwege, Gleitkommawerte zu vergleichen.
Um Gleitkommazahlen auf Gleichheit zu testen, verwenden Sie einen minimalen Fehlerwert, der nur einen Punkt größer als dieser Wert ist. Dieser Wert wird auch Maschinenminimalwert (Epsilon) genannt oder die kleinste Einheit ist eine ganze Zahl , die der kleinste in Berechnungen akzeptable Differenzwert ist.
$a und $b entsprechen einer Genauigkeit von fünf Dezimalstellen.<?php $a = 1.23456789; $b = 1.23456780; $epsilon = 0.00001; if(abs($a-$b) < $epsilon) { echo "true"; } ?>
Das obige ist der detaillierte Inhalt vonParsen des PHP-Datentyps Gleitkommatyp (Float). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!