#include <stdio.h> int main() { printf("Enter the number:"); double num; scanf("%lf",&num); printf("%lf\n",num); }
Ввод: 22222222222222222Выход: +22222222222222224,000000Почему это дает результат не так, как дано.
Длинный двойной тип обычно реализуется в формате x86 с расширенной точностью .Часть дроби этого имеет 63 бита и имеет приблизительно 18 значащих цифр.Ваш номер имеет длину 17 цифр, и в результате получается, что число слишком велико, чтобы его можно было точно хранить в доступных 63 битах.
Если оно всегда будет целым числом (без десятичной части), то подумайтеиспользуя «long long» для представления этого числа.