可以使用以下公式计算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;
}发布于 2015-10-20 00:08:52
我的C编译器在您的printf语句上给出了以下消息:
警告:格式指定类型'double‘,但参数有'long double’-Wformat类型
如果您使用%Lf而不是%lf打印pi
发布于 2015-10-20 01:42:11
而不是if / else来处理交替的加减:
for(loop=1;loop<=accuracy; loop++)
{
pi += num/denom;
printf("%d\t\t%Lf\n", loop, pi);
denom += 2.0;
num = -num;
}发布于 2016-04-15 04:51:30
将long从long double中去掉。我对它进行了测试,它似乎起作用了
https://stackoverflow.com/questions/33225898
复制相似问题