Mir sind einige gute Optionen bekannt :
Große Ganzzahlen (z. B. int64_t, mpz_t, eine beliebige bignum lib ) für Cent oder 10 -n Cent - beispielsweise steht eine Ganzzahl für 1/100 eines Pennys (1,05 $ == 10500). Dies wird als skalierte Ganzzahl bezeichnet .
Hochrangige Bibliothek für Dezimalarithmetik mit beliebiger Genauigkeit wie BigDecimal in Java, Dezimal in Python, decimal.js in Javascript, boost :: multiprecision in C ++
Saiten.
Gepackte BCDs (binär codierte Dezimalstellen) sind eine esoterischere Methode, die in alter Software beliebt zu sein schien. Lesen Sie mehr darüber .
Welcher Datentyp wird im Produktionscode für Banken (oder Kreditkarten, Geldautomaten, POS-Systeme) tatsächlich am häufigsten verwendet? Ich frage besonders diejenigen, die für Banken gearbeitet haben.
BEARBEITEN: Super nützliche Links für diejenigen mit derselben Problemdomäne (die eine "Geld" -Datenstruktur implementieren müssen, die nicht kaputt geht).
- http://martinfowler.com/eaaDev/quantity.html
- http://www.codeproject.com/Articles/28244/A-Money-type-for-the-CLR
- http://c2.com/cgi/wiki?MoneyObject
- http://www.setfiremedia.com/blog/7-top-tips-for-coding-with-currency
- http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
EDIT für den Kollegen, der sagte, dies sei eine doppelte Frage : Dies ist eine praktische und keine theoretische Frage zu "Was ist das Beste?". Lesen Sie den unbearbeiteten Titel meiner Frage. Ich frage, was die Leute in den Codebasen der Banken aus erster Hand gesehen haben.
Ich weiß, dass BigDecimal offensichtlich "am besten" ist, aber solche netten APIs sind nicht überall verfügbar, ob Sie es glauben oder nicht, und Dezimalbibliotheken sind im Gegensatz zu Ints teuer.