C(32位)中的四舍五入问题



给定以下C代码段:

printf("value: %lfn", (double) ceil(((double) 100) / ((double) 2)));

使用Visual Studio 2010 C编译器在 64位中编译此代码时,它给出了预期的结果:

value: 50.000000

但是,当与Visual Studio 2010 C编译器编译相同的代码这次在 32位中运行时,它给出了意外的结果:

value: 1028.000000

有什么提示为什么这个出乎意料的值?

如上所述,您忘记了#include <math.h>,这导致了不确定的行为

我相信,如果您打开所有警告,您将立即获得根本原因

最新更新