私はいくつかの良いオプションを知っています:
セントまたは10 -nセントを表す大きな整数(int64_t、mpz_t、任意のbignum libなど)-たとえば、整数はペニーの1/100を表します($ 1.05 == 10500)。これは、スケーリングされた整数と呼ばれます。
JavaのBigDecimal、PythonのDecimal、JavaScriptのdecimal.js、C ++のboost :: multiprecision などの任意精度の10進数演算用の高レベルライブラリ
文字列。
パックBCD(2進化10進数)は、より難解な方法で、古いソフトウェアでは一般的でした。それについてもっと読んでください 。
銀行(またはクレジットカード、ATM、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はどこでも利用できるわけではなく、信じられないかもしれません。また、10進数ライブラリはintとは対照的に高価です。