Heim > Artikel > Backend-Entwicklung > PHP-Methode für den Rest von Gleitkommazahlen
Gleitkommatyp (auch Float, Double oder Real genannt. Die Wortlänge von Gleitkommazahlen ist plattformabhängig, obwohl der Maximalwert normalerweise 1,8e308 beträgt und eine Genauigkeit von 14 Dezimalstellen hat (64-Bit-IEEE-Format) .
Gleitkommazahlen haben eine begrenzte Genauigkeit, obwohl PHP je nach System normalerweise das IEEE 754-Format mit doppelter Genauigkeit verwendet. Der maximale relative Fehler aufgrund der Rundung beträgt 1,11e-16 Bei der Durchführung zusammengesetzter Operationen muss die Fehlerausbreitung berücksichtigt werden.
Außerdem können rationale Zahlen wie 0,1 oder 0,7, die genau in Dezimalzahlen ausgedrückt werden können, intern nicht in Binärform verwendet werden, egal wie viele Mantissen es gibt. Exakte Darstellung und daher nicht in ein Binärformat konvertierbar, ohne etwas an Präzision zu verlieren
Dies würde zu verwirrenden Ergebnissen führen:
Zum Beispiel floor((0.1+0.7)*10)
Normalerweise gibt 7 anstelle der erwarteten 8 zurück, da die interne Darstellung des Ergebnisses tatsächlich etwa so lautet: 7.9999999999999991118...
Dieser Artikel beschreibt die Methode zur Berechnung des Rests von Gleitkommazahlen in PHP.
Ich teile ihn als Referenz mit Ihnen. Im Allgemeinen denken wir bei der Durchführung einer Restoperation daran, das Prozentzeichen % zu verwenden. Wenn der Divisor jedoch einen großen Wert hat und den Bereich von int überschreitet, ist der Rest ungenauphp ist groß. Restfunktion (Gleitkommazahl):
/** * php大数取余 * * @param int or float $bn 除数 * @param int $sn 被除数 * @return int 余数 */ //大数(浮点数)取余方法 function Kmod($bn, $sn) { return intval(fmod(floatval($bn), $sn)); }Testcode:
//大数(浮点数)取余方法 function Kmod($bn, $sn) { return intval(fmod(floatval($bn), $sn)); } //整数取余方法 function mod($bn, $sn) { return $bn%$sn; } //最大的int整数 $bn = PHP_INT_MAX; $sn = 11; var_dump($bn); var_dump(Kmod($bn, $sn)); var_dump(mod($bn, $sn)); //给最大的int整数加1 $bn = PHP_INT_MAX + 1; var_dump($bn); var_dump(Kmod($bn, $sn)); var_dump(mod($bn, $sn));Ausführungsergebnis:
Das obige ist der detaillierte Inhalt vonPHP-Methode für den Rest von Gleitkommazahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!