10進数の0.1を2進数に変換すると誤差ができるのはなぜ?
10進数と2進数で誤差が出ることを説明するために、簡単な例を使ってみましょう。まず、10進数と2進数の基本的な違いから始めます
10進数(Decimal)
- これは私たちが普段使っている数のシステムです。
- 10進数は0から9までの数字を使います。
2進数(Binary)
- コンピュータが使う数のシステムです。
- 2進数は0と1のみを使います。
誤差が出る理由
- 10進数できれいに表せる数が、2進数ではきれいに表せないことがあります。これが誤差の原因です
10進数の0.1を2進数に変換する方法
10進数の0.1を2進数に変換する方法を説明するには、小数点以下の2進数への変換プロセスを理解する必要があります。このプロセスは「2をかけて、整数部分を書き出す」操作を繰り返すことによって行います。しかし、重要な点として、0.1のような一部の10進数小数は2進数では完全には表現できず、近似値になることを覚えておく必要があります。
- 2をかける: 0.1に2をかけます。
- 整数部分を書き出す: 結果の整数部分を書き出し、残りを次のステップに持ち越します。
- 繰り返す: 残りに再度2をかけ、また整数部分を書き出します。これを繰り返します。
実際の計算:
- 0.1 × 2 = 0.2 → 整数部分は0、残りは0.2
- 0.2 × 2 = 0.4 → 整数部分は0、残りは0.4
- 0.4 × 2 = 0.8 → 整数部分は0、残りは0.8
- 0.8 × 2 = 1.6 → 整数部分は1、残りは0.6
- 0.6 × 2 = 1.2 → 整数部分は1、残りは0.2
このプロセスを続けていくと、整数部分の列は「0011」(0.1, 0.2, 0.4, 0.8から得られる)となり、これが繰り返されることになります。ですが、完全には終わらないので、2進数では0.1を「0.0001100110011…(無限に続く)」と表現することになります。
この変換プロセスは、理論的には無限に続きますが、実際のコンピュータシステムではある程度の桁数で打ち切られるため、2進数での表現は0.1の近似値となります。これが、10進数と2進数の間の小数点以下の数値で発生する誤差の原因の一つです。
ディスカッション
コメント一覧
まだ、コメントがありません