Tag: gcc3

将int转换为在C中浮动时的奇怪行为

我对以下C程序的输出有疑问。 我尝试使用Visual C ++ 6.0和MinGW32(gcc 3.4.2)编译它。 #include int main() { int x = 2147483647; printf(“%f\n”, (float)2147483647); printf(“%f\n”, (float)x); return 0; } 输出是: 2147483648.000000 2147483647.000000 我的问题是:为什么两条线都不同? 将整数值2147483647转换为IEEE 754浮点格式时,它将近似为2147483648.0。 所以,我预计这两行都将等于2147483648.000000。 编辑 :值“2147483647.000000”不能是单精度浮点值,因为数字2147483647无法精确表示IEEE 754单精度浮点格式而不会丢失精度。