Подтвердить что ты не робот

Почему double.MaxValue больше, чем long.MaxValue?

оба из них содержат 8 байтов, но почему максимальное значение для double намного больше максимального значения long? существует конечное количество доступных битов, так как вы можете достичь большего числа с помощью переменных с плавающей запятой?

4b9b3361

Ответ 1

Он использует другое представление (с плавающей запятой) с использованием показателей и мантиссы

Подробнее см. IEEE754

Ответ 2

У двойника есть что-то, называемое показателем, который в основном является просто масштабирующим фактором. Это позволяет диапазону двойного быть намного большим, но ценой точности.

Длинные - это простое целочисленное значение без масштабирующего коэффициента.

Ответ 3

Числа с плавающей запятой состоят из мантиссы и экспоненты, а значение числа с плавающей запятой:

mantissa * 2 показатель

Показатель в Double равен 11 бит, поэтому максимальное значение имеет величину 2 2 11 - 1= 2 1024 что больше, чем величина 64-битного подписанного двойника, который равен 2 63 -1.

Ответ 4

Поскольку представление с плавающей запятой имеет более низкую точность. В то время как тип long может представлять все целые числа в диапазоне от минимального до максимального, тип double может представлять только некоторые из них.

Поскольку они занимают одинаковое количество бит, количество чисел, каждое из которых способно выразить, почти равно (фактически, double может представлять меньшее количество чисел). Просто между этими цифрами разные.