2進数の小数表現
計算機環境での小数の扱い、切り捨て、切り上げの話をいくつか書いたことがあります。
人間が10進数の世界で計算するときでも、3×0.33333333……は?と問われるとちょっと考えてしまいます。
2進数表現でも無限小数があって、例えば0.05は0.00001001001001001……となり、無限小数になります。
計算機でこの計算をするとき、安易に切り捨て、切り上げ、四捨五入をすると、丸め誤差でいろいろなことが起きそうなことが想像できます。
消費税が5%でなければよかったですね。6.25%とか。とにかく要注意です。
ある10進数の小数が、2進数表現で無限小数になるか有限小数になるかの判定は、2の倍数の分母を持つ分数で表せるかどうかで判断できます。
0.5 = 1/2 = 0.1(2進) 0.05 = 1/20 = 分母が5の倍数。2進数の有限桁で表現できない。 0.0625 = 625/10000 = 1/16 = 0.0001(2進) 0.375 = 3/8 = 0/2 + 1/4 + 1/8 = 0.011(2進)
コメント