C语言中for中浮点数精度的一个疑问

2024-11-27 14:43:07
推荐回答(1个)
回答(1):

计算机存储浮点数时,是按IEEE754标准来存储的。简单说是以二进制科学计数法来存储的。
一个double型数据,在存储时,占8个字节,其存储格式为:符号位一位,指数位11位,尾数(小数)位52位,共计64位。
一个小数转换成二进制小数时,采用的是乘2取整法,如:0.2 =
0.2*2=0.4
0.4*2=0.8
0.8*2=1.6
0.6*2=1.2
0.2*2=0.4 到此开始循环,所以0.2=0.001100110011.。。。。
这是一个循环数,double的存储形式,导致不可能把这个循环小数全表示出来,因此不可能精确表示出0.2这个数!