4

2の1000乗を計算するコードです。

#include <stdio.h>

int main() {
    double multiply = 1;
    int i;
    for(i = 1; i <= 1000; i++) {
        multiply *= 2;
    }
    printf("%lf\n", multiply);
    return 0;
}

そして、私のシステムの出力とideone

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376

これはまさに正しい答えです:

irb(main):001:0> 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376 == 2 ** 1000
=> true
4

1 に答える 1

15

IEEE 754によると、浮動小数点数などは 2 乗形式 (基数 2 の符号、仮数、指数) で格納されます。

したがって、2^1000 は、簡単に言えば、仮数部 1 と指数部 1000 で格納されます。

2 を追加すると、値はもはや正しくありません。

于 2012-11-28T13:39:38.237 に答える