Birkaç iyi seçeneğin farkındayım :
Sentleri veya 10 - senti temsil etmek için büyük tamsayılar (örn. İnt64_t, mpz_t, herhangi bir bignum lib ) - diyelim ki, bir tamsayı bir kuruşun 1 / 100'ünü ($ 1.05 == 10500) temsil eder. Buna ölçekli tam sayı denir .
Java'da BigDecimal , Python'da Decimal, Javascript'te decimal.js, boost :: C ++ 'da multiprecision gibi rasgele kesinlik ondalık aritmetik için üst düzey kitaplık
Teller.
Paket BCD'ler (ikili kodlu ondalık sayılar), eski yazılımlarda popüler görünen daha ezoterik bir yöntemdir. Oku daha hakkında o.
Bankalar (veya kredi kartları, ATM'ler, POS sistemleri) için üretim kodunda, gerçekte en çok hangi veri türü kullanılır? Özellikle banka çalışanlarına soruyorum.
EDIT: Aynı sorun etki alanına sahip olanlar için süper yararlı bağlantılar (kırılmayan bir "para" veri yapısı uygulamak gerekir).
- 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
Bunun yinelenen bir soru olduğunu söyleyen arkadaş için EDIT : Bu, "en iyi olanın" teorik değil pratik bir sorusudur. Sorumun düzenlenmemiş başlığını okuyun. İnsanların bankaların kod tabanlarında ilk elden ne gördüklerini soruyorum.
Açıkçası BigDecimal "en iyi" olduğunu biliyorum, ama böyle güzel API her yerde mevcut değil, ister inanın ister inanmayın, ve ondalık kütüphaneler ints aksine pahalı.