可为什么,在用float fenmu=1.0声明时就可以计算正确,
可改用int fenmu=1声明就会出现误差。
#include <math.h>
main()
{
float fenshu=1,sum=0,fenmu=1.0;/*fenshu为分数值,sum为累加,fenmu为分母*/
int fenzi=1; /* fenzi为分子*/
while(fabs(fenshu)>=1e-6)
{
sum=sum+fenshu;
fenmu=fenmu+2;
fenzi=-fenzi;
fenshu=fenzi/fenmu;
}
sum=sum*4;
printf("pi=%f\n",sum);
}
4 个解决方案
#1
int/int得到的是int,int/float得到的是float
#2
类型转换的问题
#3
C的类型转换问题
PI是一浮点数
整型除整型=整型
fenmu定义为整型时当然无法得到正确的近似值。
PI是一浮点数
整型除整型=整型
fenmu定义为整型时当然无法得到正确的近似值。
#4
谢,明白,接分!
#1
int/int得到的是int,int/float得到的是float
#2
类型转换的问题
#3
C的类型转换问题
PI是一浮点数
整型除整型=整型
fenmu定义为整型时当然无法得到正确的近似值。
PI是一浮点数
整型除整型=整型
fenmu定义为整型时当然无法得到正确的近似值。
#4
谢,明白,接分!