Вот мой код, при использовании операторов print он представлял собой бесконечный цикл:
некоторые потенциальные проблемы, которые я могу устранить, это целочисленное деление и, возможно, выяснение, завершается ли алгоритм, и если он всегда имеет правильный вывод, возможно, существует некоторая особенность языка C, которую я не понимаю, вызывающая эту проблему?
Насколько я понимаю, когда сумма стремится к отрицательной бесконечности, это приведет к тому, что оператор break будет запущен, завершив алгоритм, как только он достигнет аппроксимации точности эпсилона.
#include <stdio.h>
int main()
{
double pi, sum, epsilon;
long long i=1;
long long max = 2147483647;
printf("Pleas enter the desired accuracy epsilon : ");
scanf("%f", &epsilon);
while (i<max){
if (i%2 == 0){
sum = -4.0/(2.0*i-1);
}else if (i%2 ==1){
sum = (4.0/(2.0*i-1));
}
if (sum < epsilon){
break;
}
pi += sum;
}
printf("The value of pi approximated to epsion : %f is %f\n", epsilon, pi);
return 0;
}