c++ pow(2,1000) 通常对于 double 来说很大,但它正在工作。为什么?
所以我已经学习 C++ 几个星期了,但数据类型仍然让我感到困惑。
首先是一件小事: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 个字节中的最大数字是多少?