Дает ввод 22222222222222222 для двойного, но вывод 22222222222222224.000000 Почему? - PullRequest
0 голосов
/ 24 октября 2018
#include <stdio.h>
int main()
{
    printf("Enter the number:");
    double num;
    scanf("%lf",&num);
    printf("%lf\n",num);
}

Ввод: 22222222222222222Выход: +22222222222222224,000000Почему это дает результат не так, как дано.

1 Ответ

0 голосов
/ 24 октября 2018

Длинный двойной тип обычно реализуется в формате x86 с расширенной точностью .Часть дроби этого имеет 63 бита и имеет приблизительно 18 значащих цифр.Ваш номер имеет длину 17 цифр, и в результате получается, что число слишком велико, чтобы его можно было точно хранить в доступных 63 битах.

Если оно всегда будет целым числом (без десятичной части), то подумайтеиспользуя «long long» для представления этого числа.

...