1. ホーム
  2. タイプ

[解決済み】doubleに格納できる最大の整数

2022-05-02 15:29:56

質問

IEEE 754 の double 型に精度を落とさずに格納できる最大の "no-floating" 整数は何でしょうか?

解決方法は?

doubleに精度を落とさずに格納できる最大/最大の整数は、doubleの可能な最大値と同じです。ということです。 DBL_MAX または約1.8×10 308 (ダブルがIEEE754の64ビットダブルの場合)。これは整数です。正確に表現されている。これ以上何が必要なんだ?

続けて、そのような最大の整数は何かと尋ねてみてください。 とすべての小さい整数 は、精度を落とさずにIEEE64ビットの2倍で格納することができます。IEEE64ビットダブルは仮数が52ビットなので、2だと思います。 53 :

  • 2 53 先頭の1と末尾の1の間に0が多すぎるため、+1を格納することはできません。
  • 2より小さいもの 53 が格納でき、仮数には52ビットが明示的に格納され、さらに指数が実質的にもう1つ与えられます。
  • 2 53 は、2の小乗であるため、明らかに格納可能です。

別の見方をすれば、指数からバイアスを取り除き、符号ビットを問題に無関係として無視すれば、doubleが格納する値は2の累乗であり、52ビット整数に2を掛けたものである。 指数-52 . つまり、指数52で、2以下のすべての値を格納することができます。 52 から2まで 53  - 1. 次に指数53で、2の次に格納できる数 53 は2 53 + 1 × 2 53 - 52 . そのため、精度の損失はまず 2 で発生します。 53 + 1.