実数どうしの演算の結果や、実数型データを整数型に変換した結果が正しくないことがある。
例えば、
-36.6 * 100.0 の結果は -3659.99976
となってしまう。


原因
これは一般的なコンピュータが2進数で演算を行う際に生じる誤差のためです。
10進数である精度の桁数で表現できる数でも、2進数にすると循環小数など、演算時に誤差が生じるものがあります。
質問にある -36.6 という数値は2進数で表わすと -100100.1001001... となり、循環小数になるので有限の桁数で表現することができません。

対策
整数型=固定小数点の概念で演算します。たとえば上記の演算では、被演算数をあらかじめ10倍しておき、整数値で演算します。演算終了後、結果を10で割るようにする、などです。
最終更新:
2008-07-30 10:42
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

このカテゴリー内のレコード

タグ