题目描述如下:
用公式π/4≈1-1/3+1/5-1/7+...求圆周率PI的近似值,直到发现某一项的绝对值小于10^(-6)为止(该项不累加)。
要求输出的结果总宽度占10位,其中小数部分为8位。
程序中使用浮点型数据时,请定义为双精度double类型。
如果需要计算绝对值,可以使用C语言数学库提供的函数fabs,如求x的绝对值,则为fabs(x).
本人小白一枚,在求解PI的近似值时get到的一些知识,与大家分享,若有不完善之处,欢迎大家指出,共同学习进步!
#include<stdio.h>
#include<cmath>
int main()
{
double pi=0,temp=1,sign=-1;
int n=1;
while(fabs(temp)>=1e-6)
{
pi+=temp;
n+=2;//若分母采用(2*n+1),则要先计算一次乘法,再计算一次加法,不如n+=2来的快
temp=sign/n;
sign=-sign;//尽量不要使用pow(-1,n)这样,会增加运行时间
}
pi=pi*4;
printf("PI=%10.8f\n",pi);
return 0;
}
注释的内容是我在写的过程中注意到的一些点,采用 sign=-sign