1. 处理带小数的数值
我们来讨论一下类似于1.234567,0.00001,这类非整数的数据。
我们可以先试试看,int能不能装这些数据呢?
#include <stdio.h>
int main()
{
int a = 1.234567;
int b = 0.00001;
int c = 365.12345;
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", c);
return 0;
}
好像不太行,小数部分都丢失了。那怎么办呢?
这时候我们就需要引入新的类型了——浮点类型。
2. 浮点类型:float
我们把上面代码中的整型int,用单精度浮点型float替代。
之后,再将printf("%d\n",a);中的占位符是%d,所以我们用%f替换。(%d占位符用于整型,%f占位符用于浮点型)
替换完成之后,我们再来试试看。
#include <stdio.h>
int main()
{
float a = 1.234567;
float b = 0.00001;
float c = 365.12345;
printf("%f\n", a);
printf("%f\n", b);
printf("%f\n", c);
return 0;
}

将int替换成float之后,大部分的数据都是正确的。但是365.12345变成了365.123444,很明显精度出现了误差。
这是因为,浮点数并不能表示无限的精确,它会存在着一定的误差。
C标准规定,float类型必须至少能表示6位有效数字,并且取值范围至少是10^-37~10+37。
所以,使用float来装365.12345时,前面六位数值是准确的,但是后面的数值略有误差。