Hallo,
Es ist ziemlich normal, dass einfache Dezimalzahlen wie 0.1 oder 0.7 nicht in ihre internen binären Entsprechungen konvertiert werden können, ohne einen kleinen Teil ihrer Genauigkeit zu verlieren.
Das ist ja bekannt, es kommt aber auch noch auf die konkrete Implementierung an.
Bei meinen Beispielen ergaben sich Unterschiede zwischen PHP und JavaScript, also ist offenbar der Algorithmus von round($x,$y) nicht identisch zu x.toFixed(y). Die interne Genauigkeit der beiden Sprachen duerfte vergleichbar sein.
Also kann man sich wirklich nicht auf round & co. verlassen, ich hoffe das hat keine Auswirkungen auf laufende Scripte von mir...
Ich habe mir mal noch die round()-Funktion von MySQL angesehen. Diese rundet bis zur Endziffer 5 grundsaetzlich ab:
select round(1.95,1) --> 1.9
select round(1.025,2) --> 1.02
select round(1.075,2) --> 1.07
select round(123.4555,3) --> 123.455
Auch hier waeren wieder Workarounds faellig ...
MfG, Thomas