Che cosa utilizzano effettivamente le banche come tipo di dati per soldi? [chiuso]

7

Sono a conoscenza di alcune buone opzioni :

  1. I grandi interi (es. int64_t, mpz_t, qualsiasi bignum lib ) per rappresentare i centesimi o 10 -n centesimi, un intero rappresenta 1/100 di un centesimo ($ 1,05 == 10500). Questo è chiamato numero intero scalato .

  2. Libreria di alto livello per aritmetica decimale di precisione arbitraria come BigDecimal in Java, Decimal in Python, decimal.js in Javascript, boost :: multiprecision in C ++

  3. Stringhe.

  4. I BCD compressi (decimali in codice binario) sono un metodo più esoterica che sembrava popolare nei vecchi software. Leggi more a proposito it.

Nel codice di produzione per le banche (o carte di credito, bancomat, sistemi POS), quale tipo di dati viene effettivamente utilizzato di più? In particolare, chiedo a coloro che hanno lavorato per le banche.

EDIT: link super utili per quelli con lo stesso dominio problematico (che devono implementare una struttura dati "in denaro" che non si rompa).

MODIFICA per il tizio che ha detto che si tratta di una domanda duplicata : questa è una questione pratica e non teorica di "qual è il migliore". Leggi il titolo inedito della mia domanda. Sto chiedendo che cosa le persone hanno visto di prima mano nei codebases delle banche.

So che BigDecimal è "il migliore", ovviamente, ma le API carine come quella non sono disponibili ovunque, che ci crediate o meno e le librerie decimali sono costose rispetto a quelle inte.

    
posta zelcon5 14.02.2016 - 15:39
fonte

1 risposta

-2

La maggior parte delle banche è ancora su mainframe. I tipi di dati sui mainframe sono molto scomodi per gli standard odierni. Potrebbero essere solo le cifre codificate come caratteri. Quindi 1234.56 sarebbe davvero una stringa contenente quelle cifre. E un personaggio potrebbe essere 4, 6 o 9 bit. Oppure, in situazioni "ottimizzate", potrebbero esserci due cifre in un solo carattere. Dopo tutto, hai solo bisogno di 4 bit (un nibble) per un carattere decimale.

Ci si potrebbe chiedere come mai siano venuti su queste soluzioni. Spesso si basano sull'architettura hardware. Siamo abituati a multipli di architetture a 8 bit. Ai vecchi tempi non era un dato di fatto.

Unisys utilizza parole e parole di 36 bit che possono essere suddivise in parti a 6, 9, 12 o 18 bit prima di essere utilizzate per memorizzare i dati.

Sii contento che non dovremo più occuparci di questa roba. Il framework .NET ha un bel tipo chiamato decimal che va bene per le valute.

    
risposta data 14.02.2016 - 16:51
fonte

Leggi altre domande sui tag