« 事務処理に最適化されたCOBOL 冗長化 | トップページ

2007年6月 7日 (木)

事務処理に最適化されたCOBOL 丸め誤差

 殆どの言語の数値計算は浮動小数点が一般的です。二進化十進数(BCD)を標準に使うのはCOBOLぐらいのものです。

 四捨五入はCOBOLではROUNDでカンタンに処理できますが他の言語では一工夫必要です。
 VB.NET(2002)からDecimal型が使えるようになりました。JAVAにはBigDecimal型がありますがこれはCPU負荷が大きく大量データの計算には不向きです。C++ではかなりの工夫が必要です。

浮動小数点での現象
http://go2vb.cocolog-nifty.com/blog/2007/04/post_3828.html

0.1を1000回加算しても100にならない。

1.1 - 0.1 - 1が0にならない。

 浮動小数点の0.1は内部では2進数で現すと循環小数となるためこのような現象が起こります。循環小数の場合、表示される値と内部の値が違うことが有るため、四捨五入した結果が違うということも度々起こります。

 BCD演算であればこのような誤差は発生しません。事務計算では金額計算で1円の誤差がでたらユーザから信用を失ってしまいます。

--- つづく ---

お役に立てましたか?
IT、プログラミングのランキングサイトはこちらです。

にほんブログ村 IT技術ブログへ 人気blogランキングへ FC2 Blog Rankingへ


最新記事の自動受信登録はこちらです。

はてなRSSに追加

livedoor Readerに追加
My Yahoo!に追加
Googleに追加
goo RSSリーダーに追加

|

« 事務処理に最適化されたCOBOL 冗長化 | トップページ

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/279803/6638122

この記事へのトラックバック一覧です: 事務処理に最適化されたCOBOL 丸め誤差:

« 事務処理に最適化されたCOBOL 冗長化 | トップページ