strtod изменить последнюю цифру
Кто -то может объяснить мне, что происходит?
double dbl = stdtod("9999999999999999", NULL);
Я получил значение: 9999999999999998
и не: 9999999999999999
Я не понимаю, почему это происходит, в MSDN указано, что максимальное двойное число 1.7976931348623158E+308
так что это не может быть переполнением.
Спасибо
1 ответ
Это не переполнение, это проблема с тем, как работает плавающая точка. У вас есть ограниченное количество значащих цифр, которое превышено задолго до того, как вы получите переполнение. Это было связано слышать много раз, но проверить это