Von PHP.net
Es ist typisch, dass einfache Dezimalbrüche wie 0.1 oder 0.7 ohne einen geringen Genauigkeitsverlust nicht in ihre internen binären Gegenstücke umgewandelt werden können. Dies kann zu verwirrenden Ergebnissen führen: beispielsweise gibt floor ((0.1 + 0.7) * 10) normalerweise 7 anstatt der erwarteten 8 zurück, da die interne Darstellung etwa 7.9 ist.
Dies ist aufgrund der Tatsache, dass es nicht möglich ist, einige Brüche in Dezimalschreibweise mit einer endlichen Anzahl von Ziffern auszudrücken. Zum Beispiel wird 1/3 in Dezimalform zu 0,3.
Sie geraten in Fließkomma-Ungenauigkeit.
0.1 + 0.7 ist nicht genau 0.8, aber etwas weniger. Die Umwandlung nach int schneidet den Wert einfach ab und ergibt 7 als Ergebnis.
Um das richtige Ergebnis zu erhalten, verwenden Sie die Rundung:
%Vor%Aus Ссылка
Es ist typisch diese einfache Dezimalzahl Fraktionen wie 0,1 oder 0,7 können nicht sein konvertiert in ihre interne binäre Gegenstücke ohne einen kleinen Verlust von Präzision. Dies kann zu Verwirrung führen Ergebnisse: zum Beispiel Stock ((0,1 + 0,7) * 10) wird in der Regel Rückgabe 7 statt der erwarteten 8, seit der internen Darstellung wird sei etwas wie 7.9.
Tags und Links php