Здравствуйте, подскажите пожалуйста, ниже код. Мне нужно получить "y" в long double. Я определил "y" как long double, в printf вывел через спецификатор %Lf. Но в итоге все равно какие-то совсем другие цифры получаются. (явное преобразование перед вычислениями тоже ставил - не сработывало!)
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
int main(int argc, char const *argv[])
{
system("chcp 1251");
long double y = 0;
double x, h, c = 1, x1, x2, a, b;
int k = 1, s = 1, f= 1;
printf("Введите интервал [x1, x2] и точность: \n");
while(f){
while(scanf("%lf%lf%lf", &x1, &x2, &h) != 3){
printf("Введите правильные значения!\n");
fflush(stdin);
}
if((x1>=0 && x1<=1.0) && (x2 >= x1) && (x2>=0 && x2 <= 1.0)){
f = 0;
}
else {
printf("Введите правильные значения!\n");
fflush(stdin);
}
}
printf("————————————————†——————————————\n"
" X | Y \n"
"————————————————+—————————————\n");
x = x1;
a = x;
b = x;
while(x<=x2+h/2){
y = y + a;
k = k + 1;
b = b * x * x;
c = c*(2*k - 2) * (2 * k - 1) * (2*k - 1);
s = s*(-1);
a = s*b/c;
x = x + h;
printf(" %12f | %12Lf\n", x, y);
}
printf("——————————————————————————————\n");
getch();
return 0;
}
Спасибо!