【发布时间】:2009-12-07 15:41:54
【问题描述】:
以下程序显示了我在 c++ 中看到的奇怪的 double 到 int 转换行为:
#include <stdlib.h>
#include <stdio.h>
int main() {
double d = 33222.221;
printf("d = %9.9g\n",d);
d *= 1000;
int i = (int)d;
printf("d = %9.9g | i = %d\n",d,i);
return 0;
}
当我编译并运行程序时,我看到:
g++ test.cpp
./a.out
d = 33222.221
d = 33222221 | i = 33222220
为什么 i 不等于 33222221? 编译器版本为 GCC 4.3.0
【问题讨论】:
标签: c++ type-conversion