2-2. 浮点数据类型

  • 学习人数 30K+
  • 适合所有人群学习
avatar
林耿亮

你好编程主讲老师

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;
}

初识float类型

int替换成float之后,大部分的数据都是正确的。但是365.12345变成了365.123444,很明显精度出现了误差。

这是因为,浮点数并不能表示无限的精确,它会存在着一定的误差。

C标准规定,float类型必须至少能表示6位有效数字,并且取值范围至少是10^-37~10+37。

所以,使用float来装365.12345时,前面六位数值是准确的,但是后面的数值略有误差。