我正在尝试解决运行该系列的代码 pi = 4 - 4/3 + 4/5 - 4/7 + 4/9 ... 等等。问题是,当我以更高的值运行时,函数趋向于 4,而不是 3,1415...该程序似乎只运行 n 假设的最大值。另外,我无法使 %%.lflf 根据变量(p)设置小数。该算法似乎是正确的,但几天后我迫切需要任何帮助,非常感谢。
if ( 2 == route ) {
printf("piseries calculator\n");
double pi,n,p;
printf("define precision");
scanf("%lf",&p);
n=0;
while (n++ <= p ) {
pi = (4) - (n * ( 4 / ( 1 + 2 *(n)))) +( n * ( 4 / ( 3 + 2 * (n))));
}
printf("%%.lflf",p,pi);
return 0;
}
最佳答案
首先,使n和p为整数。
其次,n 从 3 开始不是吗?
Pi 级数的第三个是 4.0(- 分数 + 分数)...
最后,您可以使用 %.*lf printf 来增加/限制输出的精度。
if ( 2 == route )
{
printf("piseries calculator\n");
double pi=4.0;
int n,p;
printf("define precision");
scanf("%d",&p);
for(n=3;n<p;n+=2)
{
pi -= 4.0/n;
n+=2;
pi += 4.0/n;
}
printf("%.*lf",p,pi);
return 0;
}
关于c - 嵌套在循环中的公式将无法正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46309386/