在C(GCC编译器)中以浮点数据类型打印超过6个十进制数字时打印的随机数字



我正在执行以下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转换为float的结果为13659964•2−22,正好是3.25678920745849609375。

当您将其打印到小数点后的10位时,结果为"3.2567892075">

相关内容

  • 没有找到相关文章