明確にするために、IEE 754フロートを実装する言語を使用していて、次のように宣言している場合:
float f0 = 0.f;
float f1 = 1.f;
...そしてそれらを印刷して戻すと、0.0000と1.0000が得られます-正確に。
ただし、IEEE 754は、実数直線に沿ったすべての数値を表すことはできません。ゼロに近い場合、「ギャップ」は小さいです。遠くに行くと、ギャップが大きくなります。
だから、私の質問は、IEEE 754フロートの場合、正確に表現できない最初の(ゼロに最も近い)整数ですか?今のところ、私は32ビットフロートだけに関心がありますが、誰かがそれを与えた場合、64ビットの答えを聞くことに興味があります!
これは、2ビットの仮数を計算して1を加算するのと同じくらい簡単だと思いました。ここで、 bits_of_mantissaは、標準が公開するビット数です。自分のマシン(MSVC ++、Win64)の32ビットフロートに対してこれを実行しましたが、問題ないように見えました。