我正在执行以下C代码-
float a=3.25678932;
printf("%0.10fn",a);
上面的printf((语句给出以下输出:
3.2567892075
我不明白小数点后前六位数字(256789(后面的其他四位数字(2075(是怎么来的。
您的C实现可能对float
使用IEEE-754二进制32格式。在这种格式中,每个有限数实际上都是一个符号(+或−(,应用于24位整数M乘以2的幂。
由于21≤3.25678932<22,使用的二的幂为2 2−2422然后,为了选择整数M,我们选择最接近3.25678932/2-22的整数。3.25678932/2-22大约是13659964.472,所以我们使用13659964。 因此,将3.25678932转换为 当您将其打印到小数点后的10位时,结果为"3.2567892075">float
的结果为13659964•2−22,正好是3.25678920745849609375。