Невозможно сохранить значение 20269207
в формате float32
( IEEE 754 ).
Вы можете видеть, почему:
Это можно хранить значения 20269206
и 20269208
; их представления в двоичной форме (см. IEEE-754 с плавающей запятой ):
01001011100110101010010001001011
для 20269206
01001011100110101010010001001100
для 20269208
Их двоичные формы отличаются на 1
, поэтому нет места для любого числа между 20269206
и 20269208
.
По правила округления «Округление до ближайшего, привязка к четному» и «Округление до ближайшего, привязка от нуля» из IEEE 754 , ваше число округляется до ближайшее еще большее число, т. е. к числу 20269208
.
Выводы для целых чисел будут отличаться:
- для нечетных чисел с абсолютными значение больше
16,777,216
, - для почти для всех чисел с абсолютным значением, превышающим
33,554,432
.
Примечания:
- Первое число -
2^24
, второе - 2^25
. - «allmost all» - есть «хорошие» числа, такие как степени 2, которые имеют точное представление даже f или очень очень большие числа .