float 的尾数不是23位吗,那为什么float能够精确表示的数据位数是6到7位呢

img


float 的尾数不是23位吗,那为什么float能够精确表示的数据位数是6到7位呢?

前6-7位是保证准确的,后面的值不一定正确

23位,是二进制小数。感受一下表达数值的变化。
1 0.5000000000000
2 0.2500000000000
3 0.1250000000000
4 0.0625000000000
5 0.0312500000000
6 0.0156250000000
7 0.0078125000000
8 0.0039062500000
9 0.0019531250000
10 0.0009765625000
11 0.0004882812500
12 0.0002441406250
13 0.0001220703125
14 0.0000610351563
15 0.0000305175781
16 0.0000152587891
17 0.0000076293945
18 0.0000038146973
19 0.0000019073486
20 0.0000009536743
21 0.0000004768372
22 0.0000002384186
23 0.0000001192093