0

0.13.140.2、および 2 の累乗の組み合わせで構成できないその他の値が、IEEE-754 形式では最終的に表現できない理由を理解しており、精度が許す限り最適に近似することができると言って、質問の前置きをさせてください。.

私が理解に苦しんでいるのは、値2 -23を表現しようとすると、わずかな誤差が生じる理由です。

2 -231.1920928955078e-7は、またはと正確に等しくなり0.00000011920928955078ます。単精度 IEEE-754 では、次のように構成できます。

  • 符号ビットは0
  • バイアスされた指数は104(または0b01101000バイナリで) 127 バイアスを考慮し-23て、最終的な指数値になります。
  • 仮数のビット フィールドは完全に0s で構成され、その最終的な値は1.0、暗黙の1-bit が考慮される場合です。

ただし、この特定のビット シーケンスをメモリに保存し、小数点以下 25 桁の精度で 10 進表記で出力すると、次のようになります。

0.0000001192092895507812500
                      ^
                      |
                      margin of error starts here

この値には正確に の誤差が含まれています1.25e-21。このインタラクティブ Web サイトでは、このエラー値を「変換によるエラー」と呼びます。

これを理解するのに苦労しています。たとえば、 のような値+3.14を単精度ビットフィールドで正確に表現できない理由を理解しているからです。指数の値でスケーリングされた仮数部の 2 の負のべき乗の組み合わせは を正確に表すことができ3.14ないため、次に近い近似値が選択されます。したがって、「変換によるエラー」が予想されます。それとは対照的に、値2 -23は単精度ビットフィールドに正確に格納できますが、10 進数表記に戻すとエラーが発生します。

明らかに私の側にある種の誤解がありますが、どこが正確かわかりません。

4

1 に答える 1