C语言里float有效数字究竟是6位还是7位?

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:36:51
我用的谭书说单精是6~7位有效数字,我用电脑一测,仍吃不准是多少位。到底是6还是7位?
仍看不太明白,回答的朋友,可否解释得通俗且清楚一些?谢谢

单精度有24位二进制有效数字。首位必须是1。

最长的情况是第一位十进制是1。1 / 2 ^ 23 = 0.00000011920928955078125,剩余位是这个的倍数。
最短的情况是第一位十进制是8或者9。这个时候小数只能用20位。1 / 2 ^ 23 = 0.00000095367431640625。

大体就是这个意思,但是为什么怎么看都不应该有6位精度的情况|||

#include <stdio.h>
int main()
{
float x = 1.123f;

printf("%.16f", x);

return 0;
}

自己测

2进制存储,换算成10进制,精度就不一定是固定多少位了,会有1位的差别

定义float f;
f=100.0/3.0;
cout<<f;
得f=33.3333

7

6