Как работать с числами типа long double - C (СИ)
Формулировка задачи:
Возникает проблема при использовании типа long double при написании программы на Си. Ответом на каждую задачу являются просто нули. Например:
Ответ: 0.0000000000000000000000000
Такой же ответ выдается, хотя бы если вычислять сумму двух чисел.
Мне советовали в самом начале написания программы добавить #define __USE_MINGW_ANSI_STDIO 1, но это не помогло.
#include <stdio.h> #include <conio.h> int main(void) { long double p, t; long int i, x; scanf("%ld", &x); p = 0; for(i = 1; i<=x; ++i) p = p + 1/i; printf("%1.25Lf", p); getch(); return 0; }
Нужно использовать именно тип long double.
Однако, при использовании типа float, программа тоже работает неправильно. Например, если в приведенной мной программе поменять тип long double на float, то ответ будет равен 1.0000000000000000000000000, то есть похоже дробная часть при вычислении просто отбрасывается. Есть какие-нибудь предложения по устранению данной проблемы? Процессор 32-ух разрядный, операционная система Windows XP SP3. Использую компилятор MinGW, среда программирования Dev-C++.Решение задачи: «Как работать с числами типа long double»
textual
Листинг программы
printf("%1.25lf", (double)p);
Объяснение кода листинга программы
В данном коде на языке C выводится значение переменной типа long double, приведенное к типу double, с точностью до 25 знаков после запятой. Список элементов кода:
%1.25lf
- форматная строка для функции printf, которая указывает, что необходимо вывести значение переменной типа long double с точностью до 25 знаков после запятой.(double)p
- приведение значения переменной типа long double к типу double.p
- переменная типа long double, значение которой будет выведено на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д