Decimal と binary

いやはや。
こちらのblogみてまた思い出してしまった。

http://www.whitehackerz.jp/blog/?p=1154

浮動小数点数の仕組みをみんな知っているという前提で評価するならいいのですが・・・・
整数、有理数などデータの型ってなに?となったら目も当てられません。

数ヶ月前に、あるプログラマ(前職では課金システムを専門に作っていたらしく、最近定年退職した方)が、隣で課金システムを作っているので、ちょっとデータベース設計とかプログラムを見てみたら 消費税計算をdoubleで処理していて、値をdoubleとしてデータベースに保存してたり・・・・

思わず突っ込みました。 いままでDecimalとか知らないで40年間プログラム作ってたようです。

小数点を含む消費税計算の四捨五入処理とか小数点切り捨てとかで1円とかずれたりする。>はい私経験者ですが。

ここ読めば詳しく書いてある。
http://ja.wikipedia.org/wiki/IEEE_754


金融関係のプログラムを作ったことがある人なら、わかると思うけど、債券とかの取引システムは金額が1件100億とか50億とか大きい数値と金利をdouble、floatなどとして金利計算すると、手数料とかまずいことになります。※為替でもおなじですが。

なのでDecimalで処理するのが当たり前

※POWER6は。ハードウェアベースの10進浮動小数点演算ユニットが組み込まれているらしい。

たぶんその人の作った過去の課金プログラムはまだどこかで、動いていると思うので誤請求していないことを祈りたいです。