コンピュータで数値を扱うとき、「10進数の0.1は2進数で正確に表せるのか?」という疑問はよく出てきます。本記事では、なぜ0.1が2進数で有限に表現できないのか、その数学的な理由とコンピュータ上での扱いについて解説します。
2進数と10進数の基本的な違い
10進数は10を基数とする表現方法であり、日常的に使われています。
一方で2進数は2を基数としており、コンピュータ内部ではこの形式が使われています。
基数が異なるため、同じ数でも表現可能性が変わります。
0.1が2進数で有限表現できない理由
10進数の0.1は分数で表すと「1/10」です。
しかし2進数では分母が2の累乗でしか有限表現できません。
10は2の累乗ではないため、0.1は無限循環小数になります。
実際の2進数表現
0.1を2進数に変換すると「0.0001100110011…」のように繰り返しが発生します。
これは「0011」が無限に続く循環小数です。
そのため完全に有限のビット列では表現できません。
浮動小数点数との関係
コンピュータではIEEE754形式などの浮動小数点数が使われます。
この形式では有限ビットで近似するため、0.1は正確値ではなく近似値として扱われます。
その結果、計算誤差が発生することがあります。
実務上の影響
金融計算や科学計算では、この誤差が問題になることがあります。
そのため整数化して扱う、または高精度演算ライブラリを使用するなどの対策が行われます。
数値の性質を理解することは正確なシステム設計に重要です。
まとめ
10進数の0.1は2進数では有限表現できず、無限循環小数になります。
そのためコンピュータ内部では必ず近似値として扱われます。
この性質を理解することで、数値誤差の原因を正しく把握できます。


コメント