10進数0.1は2進数で正確に表現できない理由|浮動小数点との関係もわかりやすく解説

数学

コンピュータで数値を扱うとき、「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進数では有限表現できず、無限循環小数になります。

そのためコンピュータ内部では必ず近似値として扱われます。

この性質を理解することで、数値誤差の原因を正しく把握できます。

コメント

タイトルとURLをコピーしました