Andreas Korthaus: Datentyp für genaue Dezimalzahlen

Beitrag lesen

Hallo!

Kürzlich wurde hierüber schonmal kurz diskutiert. Aber ich bin noch nicht ganz schlüssig, da es bei mir auf viele Nachkommastellen(8) ankommt, und die Genauigkeit hier enorm wichtig ist.

Wenn ich mySQL verwende, da gibt es ja den Datentyp DECIMAL, und dazu steht im Manual, dass das nicht als Zahl gespeichert wird, sondern im Prinzip als CHAR. Würde das nicht eigentlich reichen um das Problem mit der Ungenauigkeit von FLOAT und DOUBLE komplett(!) zu umgehen?

Ich würde also sowas wie DECIMAL(10,8) verwenden, könnte dann Zahlen da reinschreiben und hätte dabei immer 100% Genauigkeit solange es max. 8 Nachkommastellen sind, oder?

Und von der Darstellung? Da nicht alle Zahlen 8 Nachkommastellen haben müssen, manchmal auch nur 2, kann ich dann so ein Ergebnis aus der Datenbank mit PHP einfach über echo $zahl_aus_db; ausgeben ohne Probleme zu bekommen? Echo wandelt das ja dann auch noch in eine Zahl, vermutlich float um, aber hierbei dürften keine Informationen verloren gehen, oder? Gilt das auch für number_format() welches ja round() verwendet?
Was wenn man eine solche Zahl mit einem, Faktor < 0 multipliziert, und dann theoreetisch 9 Nachkommastellen hätte, man aber nur 8 ausgeben will, kann ich mich dann auf round() & Co. verlassen? probleme dürfte es doch erst bei Division durch bestimmte Priemzahlen geben, oder? Aber das mache ich nicht.

Viele Grüße
Andreas