Ну, int
использует все 32
биты для хранения целочисленного значения
1568981320 == 1011101100001001100000101001000 (binary)
, когда float
использует 23
биты * только 1010 * с первым всегда 1
(https://en.wikipedia.org/wiki/Single-precision_floating-point_format),, поэтому начальное значение 1011101100001001100000101001000
должно быть округлено :
1011101100001001100000101001000
^
^ from this on we should throw the "1001000" bits away
|
this 1 can be skipped since float assumes that the 1st bit is always 1
Так что при округлении мы должны выбросить 1001000
идобавьте 1
:
1011101100001001100000101001000 - original value (1568981320)
1011101100001001100000110000000 - rounded value (1568981376)
^ ^
will be stored in float
, и это 1568981376
значение, которое на больше , чем оригинал 1568981320