Следующая программа показывает странное поведение преобразования double в int, которое я вижу в c ++:
#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
Почему я не равен 33222221?
Версия компилятора GCC 4.3.0