double での整数の表現

IEEE754 の 64 ビット double は、53 の奇数 (a) を持つという理由だけで、任意の 32 ビット整数を表すことができます。 精度に使用できるビット数と 32 ビット整数は、まあ、32 だけが必要です :-)

(非 IEEE754 倍精度) 64 ビット浮動小数点数の精度が 32 ビット未満であることはもっともらしいでしょう。これにより、(指数のために)非常に大きな数が可能になりますが、精度が犠牲になります。

肝心なのは、浮動小数点数の仮数部の精度のビット数が整数のビット数よりも多い場合 (および指数部に十分なビット数をスケーリングする場合)、精度を失うことなく表現できるということです。 /P>

(a) 技術的には、精度の 53 番目のビットは暗黙の 1 です。 シーケンスの開始時に、「可変性」の量はわずか 52 ビットである可能性があります。 52 であっても 53 であっても、すべての 32 ビット整数を表すのに十分なビットです。


はい。 float (または double) は、切り捨てる必要のない整数を正確に表すことが保証されています。 double の場合、53 ビットの精度があるため、32 ビットの整数を正確に表すにはこれで十分であり、(統計的に言えば) 64 ビットの整数の割合もごくわずかです。


正確に表現できる範囲は、実装の多くの要因に依存しますが、指数フィールドが 0 に設定されている場合、幅までの整数を正確に表現できると言って、それを下限することができます。仮数フィールド(符号ビットを想定)。 IEEE 754 倍精度の場合、これは 52 ビットの数値を正確に表現できることを意味します。一般に、仮数は構造全体の幅の半分以上になります。