c++ pow(2,1000) は double の場合は通常大きいですが、機能しています。なぜ?
だから私は数週間C++を学んでいますが、データ型はまだ私を混乱させています.
最初に小さなマイナーなことを 1 つ: 0xbadc0de が別のスレッドに投稿したコードが機能していません。まず第一に私にpow(2,1000)
与えますthis more than once instance of overloaded function "pow" matches the argument list.
変更して修正しましたpow(2,1000)
->pow(2.0,1000)
問題ないようです、実行してこれを取得します:
http://i.stack.imgur.com/bbRat.png
それ以外の
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
多くの値が欠落しています。何が原因でしょうか?
しかし、ここで本当の問題です。どうすれば 302 桁の数字が倍精度 (8 バイト) に収まるのだろうか? 0xFFFFFFFFFFFFFFFF = 18446744073709551616 では、どうすればそれよりも大きな数値になるのでしょうか?
浮動小数点数のエンコーディングと関係があると思います。また、0xFFFFFFFFFFFFFFFF でない場合、8 バイトに格納できる最大の数は何ですか?