Я знаю кілька хороших варіантів :
Великі цілі числа (наприклад, int64_t, mpz_t, будь-яка bignum lib ) для відображення центів або 10- n центів - скажімо, ціле число представляє 1/100 копійки (1,05 = $ = 10500). Це називається масштабним цілим числом .
Бібліотека високого рівня для довільної арифметики з точністю, такою як BigDecimal у Java, Decimal у Python, decimal.js у Javascript, boost :: багатоточність у C ++
Струни.
Упаковані BCD (двійкові кодовані десяткові знаки) є більш езотеричним методом, який здався популярним у старому програмному забезпеченні. Читайте докладніше про це.
У виробничому коді для банків (або кредитних карт, банкоматів, POS-систем) який тип даних насправді використовується найбільше? Я особливо прошу тих, хто працював у банках.
РЕДАКТУВАННЯ: Супер корисні посилання для тих, хто має однакову проблемну область (потрібно впровадити структуру даних "гроші", яка не руйнується).
- 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 для того, хто сказав, що це повторне запитання : Це практичне, а не теоретичне питання про те, "що найкраще". Прочитайте неопубліковану назву мого запитання. Я запитую, що люди бачили з перших рук у кодових базах банків.
Я знаю, що BigDecimal є "найкращим" очевидно, але приємні API, такі, які доступні не скрізь, вірите чи ні, а десяткові бібліотеки дорогі на відміну від ints.