首先附上这一个源码,这是我学习C语言中经常遇到一个小问题。
// 用pi4≈1-1/3+1/5-1/7+...公式求pi的近似值,
// 直到某一项的绝对值小于10的-6次方为止。
#include<stdio.h>
#include<math.h>
int main(){
int i,sign=-1;
float temp=1, pi=0;
//for(i=3;fabs(temp)>=1e-6;i+=2)
i=3;
while(fabs(temp)>=1e-6){
pi=pi+temp;
temp=sign*(1.0/i);
sign=-1.0*sign;
i+=2;
}
pi*=4;
printf("%f",pi);
return 0;
}
在段代码中,由于 float temp=1, pi=0;为单精度浮点型的数据类型,所以在做乘除运算时会出现系统将格式强制转化的问题,所以为了避免这一问题的发生,要在运算的前面乘以一个1.0的格式转换代号,已将本定义为 int i,sign=-1整型的数据转化为浮点数。