1

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

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

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

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

谢谢

4

1 回答 1

2

它不是溢出,而是浮点如何工作的问题。在溢出之前很久就超过了有限的有效数字。这已经被链接了很多次,但看看这个

于 2011-04-13T18:59:50.203 回答