看下面一段代码:
void test()
{float f1 = 0.1f;
float f2 = 1.0f;
int i = 6900;
float f = i * (1 - f1 * f2);
int x = (int) (i * (1 - f1 * f2));
int y = (int) ceil(i * (1 - f1 * f2));
int z = (int) floor(i * (1 - f1 * f2));
printf("%f, %d, %d, %d\n", f, x, y, z); // 输出:6210.000000, 6209, 6210, 6210
}
为什么x的值是6209?与浮点数的内存模型有关?怎么解释。
本文深入解析了一段代码中浮点数与整型转换的过程,特别是通过浮点数运算后进行整型转换时的取值行为,揭示了其中与浮点数内存模型相关的关键原理。
11万+

被折叠的 条评论
为什么被折叠?



