strtod改变了最后一位数

时间:2011-04-13 18:54:43

标签: strtod

有人可以向我解释发生了什么事吗?

double dbl = stdtod("9999999999999999", NULL); 

我得到了价值:9999999999999998
而不是:9999999999999999

我不明白为什么会发生这种情况,在MSDN中,指定最大双数是1.7976931348623158E+308,所以它不能是溢出。

由于

1 个答案:

答案 0 :(得分:2)

浮点运算的问题不是溢出。在溢出之前很久就会超过有效数字的有限nubmer。这已被多次联系,但请查看this