我从wikipedia了解到,双精度浮点数最多有15-17位有效十进制数字
然而,对于下面这个简单的C++程序
double x = std::pow(10,-16);
std::cout<<"x="<<std::setprecision(100000)<<x<<std::endl;
(要测试它,请使用{{link1:此在线 shell}}),我得到
x=9.999999999999999790977867240346035618411149408467364363417573258630000054836273193359375e-17
这个数有88位有效数字,显然与维基百科之前的说法相矛盾。有人能否澄清一下,我是否误解了什么?谢谢。
setprecision
的行为与标准精度声明之间的明显差异。 - Oliver Charlesworth