そのため、浮動小数点数の有効桁数と精度の相対的な損失との関係を頭でラップしようとしましたが、それを理解できないようです。私は以前、次のことを行うように言った記事を読んでいました。
- float を 2147483647 の値に設定します。その値が実際には 2147483648 であることがわかります。
- float から 64 を引くと、演算が正しいことがわかります。
- float から 65 を引くと、実際には 2147483520 になっていることがわかります。つまり、実際には 128 を引いたということです。
では、有効桁数が 10 桁であるのに、なぜ 128 になるのでしょうか。float がどのように格納されるか (符号は 1 ビット、指数は 8 ビット、仮数は 23 ビット) を理解し、すべての整数が float データ構造で正確なホームを自動的に見つけると仮定すると、どのように精度が失われるかを理解していますが、私は知りません。 128がどこから来たのか理解できません。私の直感は、私が正しい方向に進んでいることを示していますが、誰かが私のためにこれを解決できることを願っています.
私は当初、可能な float 間の距離は 2 ^ (n-1) (n は有効桁数) であると考えていましたが、そうではありませんでした。
ありがとうございました!