5

そのため、浮動小数点数の有効桁数と精度の相対的な損失との関係を頭でラップしようとしましたが、それを理解できないようです。私は以前、次のことを行うように言った記事を読んでいました。

  1. float を 2147483647 の値に設定します。その値が実際には 2147483648 であることがわかります。
  2. float から 64 を引くと、演算が正しいことがわかります。
  3. float から 65 を引くと、実際には 2147483520 になっていることがわかります。つまり、実際には 128 を引いたということです。

では、有効桁数が 10 桁であるのに、なぜ 128 になるのでしょうか。float がどのように格納されるか (符号は 1 ビット、指数は 8 ビット、仮数は 23 ビット) を理解し、すべての整数が float データ構造で正確なホームを自動的に見つけると仮定すると、どのように精度が失われるかを理解していますが、私は知りません。 128がどこから来たのか理解できません。私の直感は、私が正しい方向に進んでいることを示していますが、誰かが私のためにこれを解決できることを願っています.

私は当初、可能な float 間の距離は 2 ^ (n-1) (n は有効桁数) であると考えていましたが、そうではありませんでした。

ありがとうございました!

4

2 に答える 2

4

2 つの浮動小数点数の間の距離は、指数によって異なります。指数が小さいほど、ある浮動小数点数と次の浮動小数点数の差が小さくなります。次に考慮すべきことは、浮動小数点数に格納される指数は 10 進指数ではなく 2 進指数であるため、浮動小数点数の場合、10 進精度は数値の 2 進精度よりも重要ではないということです。このドキュメントの図 9.1 は、この概念をよく説明しています。

于 2011-08-10T04:24:59.460 に答える
3

2 つの隣接する浮動小数点数の間の「距離」は2^(1-n+e)です。ここで、eは真の指数、nは仮数 (仮数) のビット数です。保存された指数は真の指数ではなく、偏りがあります。IEEE-754 float の場合、これは127 (正規化された数値の場合) です。それで、Peter O が言ったように、距離は指数に依存します。

于 2011-08-10T20:08:25.167 に答える