Как работать с числами типа long double - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Возникает проблема при использовании типа long double при написании программы на Си. Ответом на каждую задачу являются просто нули. Например:
#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;
}
Ответ: 0.0000000000000000000000000 Такой же ответ выдается, хотя бы если вычислять сумму двух чисел. Мне советовали в самом начале написания программы добавить #define __USE_MINGW_ANSI_STDIO 1, но это не помогло.

Нужно использовать именно тип 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. %1.25lf - форматная строка для функции printf, которая указывает, что необходимо вывести значение переменной типа long double с точностью до 25 знаков после запятой.
  2. (double)p - приведение значения переменной типа long double к типу double.
  3. p - переменная типа long double, значение которой будет выведено на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы