JAVA 四則演算 について
- 2009年 3月 14日
- コメントを書く 878 views
昔もこれで苦労したことがあったので書き留めておきます。
doubleの四則演算で丸め誤差があります。
2.3*3000 が 6900にならず 6899.9999・・・ になってしまう。。
double型が内部的に64ビットの浮動小数点で数値を表現している
ために「丸め」が発生しているためです。
常識という方は、すいません。m(_ _*)m
通常の数値計算ルーチンは数値はすべて2進数扱いしますが、
2進数では10進数の小数を表現しきれないためにこういう現象が
発生するらしい。。。。
2進数の桁は2の累乗扱いになるわけですが、
小数だと、2の-1乗(つまり1/2)、2の-2乗(1/4)という単位になります。
したがって、2のマイナス何乗かの数値の合成でうまく表現できない
数値は無限小数になって、最後の桁を切り捨てした部分の
誤差ができてしまいます。
