Sono a conoscenza di alcune buone opzioni :
Grandi numeri interi (ad esempio, int64_t, mpz_t, qualsiasi lib bignum ) per rappresentare centesimi o 10 -n centesimi - diciamo, un numero intero rappresenta 1/100 di un penny ($ 1,05 == 10500). Questo si chiama intero intero ridimensionato .
Libreria di alto livello per l'aritmetica decimale di precisione arbitraria come BigDecimal in Java, Decimal in Python, decimal.js in Javascript, boost :: multiprecision in C ++
Stringhe.
I BCD compressi (decimali con codice binario) sono un metodo più esoterico che sembrava popolare nei vecchi software. Leggi di più al riguardo .
Nel codice di produzione per banche (o carte di credito, bancomat, sistemi POS), quale tipo di dati viene effettivamente utilizzato di più? Chiedo soprattutto a chi ha lavorato per le banche.
EDIT: collegamenti super utili per coloro che hanno lo stesso dominio problematico (è necessario implementare una struttura di dati "monetari" che non si interrompa).
- 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 per il collega che ha detto che questa è una domanda duplicata : questa è una domanda pratica non teorica di "qual è il migliore". Leggi il titolo inedito della mia domanda. Sto chiedendo che cosa la gente abbia visto in prima persona nelle basi di codice delle banche.
So che BigDecimal è "il migliore" ovviamente, ma API piacevoli come quelle non sono disponibili ovunque, che ci crediate o no, e le librerie decimali sono costose rispetto agli ints.