Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich Preise von Artikeln in einer Datenbank in Centangaben. Das heißt also bei 8,95€ sind das 895 Cent. Nun will ich z.B. auf der Rechnung die preise in Euro ausgeben. Dazu führe ich folgendes aus:
Floatingpoint-Zahlen haben nur eine begrenzte Genauigkeit. Bei Preisen nimmt man normalerweise das Decimal-Modul. Alternativ gibt man die Zahlen formatiert auf zwei Nachkommastellen aus, da ist aber das Problem, wenn die Zahlen sehr groß werden, oder viele zusammengerechnet werden, das Ergebnis ungenau wird.
@nieselfriem: Doch, auch bei 1995 passiert das, weil man 0.01 schon nicht exakt als `float` darstellen kann. Sieht man, wenn man sich mal mehr Nachkommastellen anzeigen lässt als das die normale `repr()`-Darstellung macht:
Übrigens wird das Problem dadurch verstärkt, dass schon 0.01 nicht exakt darstellbar ist, und sich die Fehler (0.01 ungenau, Ergebnis auch nicht genau darstellbar) verstärken.
Schreibt man 895 / 100, wird 8.95 ausgegeben.