strtod изменить последнюю цифру - PullRequest
1 голос
/ 13 апреля 2011

кто-то может объяснить мне, что происходит?

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

Я получил значение: 9999999999999998
, а не: 9999999999999999

Я не понимаю, почемуэто происходит в MSDN, указывается, что максимальное двойное число равно 1.7976931348623158E+308, поэтому оно не может быть переполнением.

Спасибо

1 Ответ

2 голосов
/ 13 апреля 2011

Это не переполнение, это проблема с тем, как работает плавающая точка. У вас есть ограниченное количество значащих цифр, которое превышено задолго до того, как вы получите переполнение. Это было связано слышать много раз, но проверьте это

...