为什么float型数据的有效位数最多为7位
在解释这个问题之前,先来看一个例子。
#include<stdio.h>
int main()
{
float x;
scanf("%f",&x);
printf("%f\n",x);
printf("%.5f\n",x);
return 0;
}
输入:
611.123456
输出:
61.123474
61.12347
为什么会出现这样的输出呢?
因为在C语言里%f表示的是保留七位有效位数(整数+小数),这里的有效位数概念上不同于保留小数,所以当保留小数位数加上整数位数超过7位时,那么输入的这个浮点数就是一个不可表示的数,那么计算机就会将其转化为最邻近的可表示数。从第七位往后开始就要转化了,所以它的有效位数就是7位。
网友评论