.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
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.
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.
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Ä
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...)
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.
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.
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden