【发布时间】:2015-10-20 00:02:46
【问题描述】:
可以使用以下公式计算 PI:
π = 4 - 4/3 + 4/5 -4/7 +4/9 -4/11 ....
序列越远,获得的准确度就越高。我的代码似乎正确,我将值添加到变量pi。但是,一旦我打印了变量pi,我得到的只是零。怎么了?
#include <stdio.h>
int main()
{
long double pi =0.0;
long double num= 4.0;
long double denom= 1.0;
long int loop;
long int accuracy;
accuracy= 400000;
printf("Accuracy set at: %ld\n", accuracy);
printf("term\t\t pi\n");
for(loop=1;loop<=accuracy; loop++)
{
if(loop%2 != 0)
{
pi += num/denom;
}
else{
pi-= num/denom;
}
printf("%ld\t\t%lf\n", loop, pi);
denom +=2.0;
}
return 0;
}
【问题讨论】:
-
只是好奇 - 一切都有 4。为什么不把4个拿出来?是否有理由在扩展的每个术语中保留 4?
-
它在表格的 PI 侧仅打印 0.000000。它应该越来越接近 3.1415
-
@MartinJames,这是问题给出的数学公式。如果我们把 4 去掉,我们就不会更接近 PI 的实际价值了。