Mam świadomość kilku dobrych opcji :
Duże liczby całkowite (np. Int64_t, mpz_t, dowolny bignum lib ) do reprezentowania centów lub 10- n centów - powiedzmy, liczba całkowita reprezentuje 1/100 grosz (1,05 $ == 10500). Nazywa się to skalowaną liczbą całkowitą .
Biblioteka wysokiego poziomu dla arytmetyki dziesiętnej o dowolnej precyzji, taka jak BigDecimal w Javie, Decimal w Pythonie, decimal.js w JavaScript, boost :: multiprecision w C ++
Smyczki.
Pakowane BCD (dziesiętnie kodowane binarnie) to bardziej ezoteryczna metoda, która wydawała się popularna w starym oprogramowaniu. Przeczytaj więcej na ten temat .
W kodzie produkcyjnym dla banków (lub kart kredytowych, bankomatów, systemów POS) jaki typ danych jest faktycznie najczęściej używany? Szczególnie pytam tych, którzy pracowali dla banków.
EDYCJA: Super przydatne linki dla osób z tą samą domeną problemową (potrzebujących zaimplementować strukturę danych „pieniędzy”, która się nie psuje).
- 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
EDYTUJ dla osoby, która powiedziała, że jest to duplikat : jest to praktyczne, a nie teoretyczne pytanie „co jest najlepsze”. Przeczytaj niezredagowany tytuł mojego pytania. Pytam, co ludzie widzieli z pierwszej ręki w bazach kodów banków.
Wiem, że BigDecimal jest oczywiście „najlepszy”, ale takie ładne interfejsy API nie są dostępne wszędzie, wierzcie lub nie, a biblioteki dziesiętne są drogie w przeciwieństwie do int.