.tscherno Geschrieben 28. Oktober 2005 Geschrieben 28. Oktober 2005 Hallo, ich bin auf einen interessanten Thread im Heise C/C++ Forum gestossen: http://www.heise.de/foren/go.shtml?read=1&msg_id=8879998&forum_id=44546 Aus einer Newbie Frage entwickelte sich dort eine lange Diskussion über das berechnen von Zinsen, weil ja Banken nicht nur mit 2 sondern oft mit bis zu 6 oder 8 Stellen nach dem Komma rechnen. Bekanntlich ist Float aber nicht gerade genau und eine Abweichung von 0,00001 Cent kann bei Beträgen in Milliarden Höhe bereits sehr viel Geld ausmachen. (Zinses Zins) Weis jemand wie Banken rechnen ?Wie würdet ihr das Problem Lösen ? Int benutzen und dann Umwandeln ? gruss tscherno Zitieren
Guybrush Threepwood Geschrieben 28. Oktober 2005 Geschrieben 28. Oktober 2005 Die meisten Systeme für die Rechenzentren der Bänke sind auch in anderen Sprachen geschrieben wie z.B. Cobol. Bei Cobol ist es so das es erstmal keine "richtigen" Variablen für Zahlen gibt sondern diese als eine Art String abgebildet werden welcher nur die Zeichen von 0-9 enthält. Dadurch gibt es bei Cobol IMHO keine Rundungsfehler, auch wenn es auf Kosten der Performance geht. Unter C/C++ würde ich z.B. anstatt float double nehmen da es genauer ist. Außerdem gibt es mehrere Bibliotheken die andere Datentypen für so etwas bereitstellen. Zitieren
Mathias Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 Man nimmt überhaupt keine Flieskommadatentypen. Sondern einen Datentyp der eine definierte Anzahl von Nachkommastellen hat. C++ besitzt von Haus aus keinen solchen Datentyp. Man könnte diesen jedoch z.B. durch eine Klasse simulieren, die zwei Membervariablen (int, short, long, .. oder so) besitzt. Die erste Variable für die Vorkommastellen und die Zweite für die Nachkommastellen. Man kann mit einem solchen Datentyp natürlich nicht so schnell rechnen wie mit einem einfachen Datentyp aber dafür kann man mit einer definierten Genauigkeit von x-Stellen rechnen. Zitieren
zirri Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 Man nimmt überhaupt keine Flieskommadatentypen. Yep, man nimmt einen Datentyp vom Typ Ganzzahlen... und rechnet dann mit 1000/cent oÄ Zitieren
Mathias Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 Das ist die andere Variante. Man sollte jedoch dabei bedenken, dass unter der Verwendung einer 32-Bitvariable, die größt mögliche Zahl bei 8 Nachkommastellen, nicht gerade astronomisch hoch ist. :floet: (Würde kein Geld bei dir anlegen wollen...) Zitieren
perdian Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 Man sollte jedoch dabei bedenken, dass unter der Verwendung einer 32-Bitvariable, die größt mögliche Zahl bei 8 Nachkommastellen, nicht gerade astronomisch hoch ist. Und genau deshalb wird man im Finanzbereich auch nicht mit "normalen" (atomaren) numerischen Datentypen rechnen, sondern spezielle Bibliotheken verwenden, die eben die Genauigkeit, die gerade gefordert ist, abbilden können. Zitieren
Mathias Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 Richtig perdi und wir haben uns ein bißchen darüber unterhalten wie man eine solche Bibliothek ansatzweise realisieren könnte. Zitieren
perdian Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 wie man eine solche Bibliothek ansatzweise realisieren könnte.Alles schon fertig... im Zweifel einfach abgucken :hells: BigDecimal Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.