Я пишу эту короткую программу для проверки преобразования из double в int:
int main() {
int a;
int d;
double b = 0.41;
/* Cast from variable. */
double c = b * 100.0;
a = (int)(c);
/* Cast expression directly. */
d = (int)(b * 100.0);
printf("c = %f \n", c);
printf("a = %d \n", a);
printf("d = %d \n", d);
return 0;
}
Вывод:
c = 41.000000
a = 41
d = 40
Почему a
и d
имеют разные значения, даже если они оба являются продуктом b
и 100
?