Hi,
Wenn Du immer genau 2 Nachkommastellen hast, z.B. weil es Geld ist, dann rechne nicht mit Euro, sondern mit Cent. D.h. wenn Du "42.01" hereinbekommst, multipliziere es mit 100, addiere 0,5 und mache mit intval() eine Integerzahl draus.
Ich meine, mal gehört zu haben, dass das auch nicht der Weisheit letzter Schluss ist. Banken benötigen für Zinsrechnungen weit mehr als Cent-Genauigkeit, möglicherweise reichen Hundertstel-Cent.
das fängt bei den Tankstellen schon an, die zumindest intern auch mit den Zehntel-Cent rechnen.
Aber wenn man Geldbeträge mit 10000 multipliziert, um genaustens rechnen zu können, stößt man viel schneller an speichergrenzen bei großen Beträgen... Ein Dilemma.
Tja, irgendeinen Haken gibt's immer. 😉
Es gibt noch andere Möglichkeiten. Traditionelle Taschenrechner verwenden AFAIK BCD-Arithmetik, d.h. Zahlen werden intern als BCD gespeichert und verarbeitet. So kann man zumindest im Dezimalsystem, das ja die meisten von uns primär verwenden, ohne Rundungsfehler rechnen.
Daher werden meines Wissens Euro und Cent irgendwie getrennt verwaltet. Das kann aber längst veraltet oder Einbildung sein…
Ich kann mir nicht vorstellen, was das für einen Vorteil bringen könnte.
Live long and pros healthy,
Martin
Home is where my beer is.