I run this code
int a, b;
float t;
a = 18642731; //16777217:16777217 16777216.000000 16777216
t = (float)a;
b = (int)t;
if (a != b)printf("%d %f %d\n", a, t, b);
The output is
18642731 18642732.000000 18642732
The compiler is gcc 9.3.0.
Why is t
not the value of 18642731.000000