Я на самом деле исследую, как отобразить число с плавающей запятой (с записью), и сталкиваюсь с чем-то, что меня смущает.
Я обнаружил, что значения с плавающей запятой хранятся в 32 битах, из которых 1 бит для знака, 7 бит для экспоненты и остальные для мантиссы.
Когда у меня возникают проблемы, когда я отображаю FLT_MAX с printf, я получу 340282346638528859811704183484516925440.000000
, просто выполнив
printf("%f\n", FLT_MAX)
Это значение больше, чем INT_MAX, больше, чем LLONG_MAX, как это число может быть сохранено в 32 битах? Это действительно 32 бита или зависит от системы? Я на Ubuntu x86_64 GNU/Linux
.
Я не могу понять, как более 10 цифр (INT_MAX len) могут храниться в одном и том же количестве битов.
Если думаете, что проблема связана, но у меня также есть проблема для двойника, который даст мне
printf("%lf", DBL_MAX);
#179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000
Это делает тайну больше!
Спасибо за помощь, надеюсь, я был ясен.