Heim >Backend-Entwicklung >PHP-Tutorial >Problem mit der PHP-Bodenfunktion.
$money=271.28; echo $money=floor($money*pow(10,2))/100Ich war überrascht, dass die Ausgabe nicht 271,28, sondern 271,27 war!
Nachdem ich viele Informationen überprüft hatte, sah ich Folgendes auf der offiziellen PHP-Website:
Später druckte ich das Ergebnis der obigen Operation aus:
printf("%.12f", $money*pow(10,2));Das Ergebnis war: 27127.999999999996
Es drehte sich stellt sich als Genauigkeitsproblem heraus. Es wurde noch keine einheitliche Lösung gefunden. Ich kann der Codelogik nur
if ($money - round ( $money, 2 ) < 0.00001) { }else{ $money=floor($money*pow(10,2))/100; }hinzufügen, um eine erneute Verarbeitung der Daten zu vermeiden, die auf zwei Ziffern genau waren.
Wenn jemand eine andere Möglichkeit kennt, die obige Funktion zu implementieren (auf zwei Dezimalstellen genau und die dritte Ziffer weglassen), lassen Sie es mich bitte wissen.
Das Obige stellt das Problem der Bodenfunktion von PHP vor. Ich hoffe, dass es Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein wird, einschließlich relevanter Inhalte.