你好,C语言
上QQ阅读APP看书,第一时间看更新

3.2.1 float

我们将上面代码中的整型int替换为单精度浮点型float。

随后,我们再将printf("%d\n",a);中的占位符%d替换为%f,因为我们已经学过%d占位符用于整型,而%f占位符用于浮点型。

程序清单3.4是替换完成的代码。

程序清单 3.4

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

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

图3.12 初识float类型

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

在C语言中,float类型可以表示6~7位有效数字(即精度),这取决于具体的实现和编译器。这意味着在进行计算时,对于小于或等于6~7位有效数字的数,float类型可以提供足够的精度,但对于更大的数,则可能存在舍入误差。

float 类型的取值为1.2×10−38~3.4×1038,也可以表示非常接近0的数字(如1.2−38),但是它的精度可能会受到限制。

因此,当我们使用float类型存储365.12345时,前面六位数值是准确的,但是后面的数值略有误差。