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