Есть код написаный на Си, и мне нужно чтобы цикл сработал 10 раз
Ниже есть код, в котором выводится значение р= -6.08999999999999985789, а мне надо чтобы выводило -6.09, и да я знаю что оно выведет то что мне надо если заменю 20 на просто 2, но в ячейке память будет держать то длинное число и из-за этого цикл не срабатывает 10 раз Как это сделать?
#include
#include
#include
#define a 8.3
#define b 1.43
#define xfinish -4.74
#define deltx 0.15
#define N 10
int main()
{
double p, d, xstart, step;
xstart=-1*((N-1)*deltx-(xfinish));
printf("%.2f", xstart);
for( p = xstart; p <= xfinish; p += deltx ) {
printf("Значение аргумента p= %.20lf\n", p);
d=pow(2, -p)*(sqrt(labs(p+pow(labs((p-a)), 1/4.))*(exp(b))));
printf("Значение d=%.2f\n", d);
}
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
6.09 не представимо в виде double точно в силу ограничений чисел с плавающей точкой. Если вам надо ровно 10 выполнений — лучше всего стройте цикл на основе целых чисел.
int main()
{
double p, d, xstart, step;
xstart=-1*((N-1)*deltx-(xfinish));
printf("%.2f\n", xstart);
p = xstart;
for(int i = 0; i < N; ++i)
{
printf("Значение аргумента p= %.20lf\n", p);
d=pow(2, -p)*(sqrt(labs(p+pow(labs((p-a)), 1/4.))*(exp(b))));
printf("Значение d=%.2f\n", d);
p += deltx;
}
return 0;
}