最大の整数格納できるダブル
-
13-09-2019 - |
質問
何はならない浮動小数までの整数に保持することができるIEEE754ダブルタイプなの精密?
解決
最大/最大級の整数格納できるダブルを失わずに精度の最大値ます。それは、 DBL_MAX
は約1.8×10308 使用した場合は、ダブルIEEE754 64ビットのdouble).この整数となります。で表されるそうですね。何よりスタッフがむちゃくちゃ親切です。
かもしれないけれど、何かと問わの最大の整数ではない すべて小さい整数 保存できIEEE64ビットのdouble値を失わないます。IEEE64-bitダブル"の52ビットの仮数思うのでの253:
- 253 +1保管することはできませんので、1時開始の1の大きさによっても多くの零点です。
- 何でも以下の253 保存でき、52ビットを明示的に保存され、仮数と指数に影響を与えます。
- 253 明らかに収納可能で、小さな力2.
または別のものの見方で一度、バイアスされた、指数部を無視の符号ビットとして無関係という問いに価値を保管ダブルパワーストーンであり2、52ビット整数を乗じた2指数−52.この指数52き全ての値から252 を通じて2つの53 1のとおりとする。した指数53,次数につき253 253 + 1 × 253 − 52.で精度の損失最初に発生する253 + 1.
他のヒント
9007199254740992 (9,007,199,254,740,992)を保証:)
プログラム
#include <math.h>
#include <stdio.h>
int main(void) {
double dbl = 0; /* I started with 9007199254000000, a little less than 2^53 */
while (dbl + 1 != dbl) dbl++;
printf("%.0f\n", dbl - 1);
printf("%.0f\n", dbl);
printf("%.0f\n", dbl + 1);
return 0;
}
結果
9007199254740991 9007199254740992 9007199254740992
ウィキペディアは、このリンクを同じ文脈で言っているの IEEE 754 に:
一般的なコンピュータシステムでは、「倍精度」(64ビット)のバイナリ浮動小数点数を(暗示される一つが)53ビットの係数、11ビットの指数、および1つの符号ビットを有しています。
2 ^ 53は、わずか9×10 ^ 15である。
最大の整数で表現できる"IEEE754double(64ビット)と同じであり最大値の型を表すことができ、その値は整数です。
このとして表される 0x7FEFFFFFFFFFFFFF
, することはできません。
- のビット0(正することにより、1(負)
- 最大指数
0x7FE
(2046を代表する1023後、バイアスを差し引いて算出される)ではなく0x7FF
(2047ることを示し、NaN
または無限大). - 最大の仮数
0xFFFFFFFFFFFFF
は52ビットは全て1です。
バイナリの値が暗黙の1に続いて他の52のものから、仮数部、その971ゼロ(1023-52=971)からの眠しました。
の正確な数値は以下の通りです:
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368
この約1.8×10308.
あなたは、仮数の大きさを見てする必要があります。 IEEE 754 64ビット浮動小数点(52ビットを有し、プラス暗黙1)番号が正確に2 ^ 53以下の絶対値を有する整数を表すことができます。
1.7976931348623157×10 ^ 308
http://en.wikipedia.org/wiki/Double_precision_floating-point_formatする
DECIMAL_DIG
から<float.h>
は、少なくともその合理的な近似を与える必要があります。それは小数点以下の桁数を扱って、それが本当にバイナリに保存されているので、おそらく何かを保存することができます。の少しの精度を失うことなく、より大きな、しかし、正確にどのくらいのことは言い難いです。私はあなたがFLT_RADIX
とDBL_MANT_DIG
からそれを把握することができるはずと仮定し、私は、私は完全に結果を信頼したいかわからない。