SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

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進)

関連するメモ

コメント