Они имеют разные диапазоны значений, потому что их содержимое интерпретируется по-разному; другими словами, они имеют разные представления .
Плавающие и двойные, как правило, представлены как что-то вроде
+-+-------+------------------------+
| | | |
+-+-------+------------------------+
^ ^ ^
| | |
| | +--- significand
| +-- exponent
|
+---- sign bit
где у вас есть 1 бит для представления знака s (0 для положительного, 1 для отрицательного), некоторое количество бит для представления показателя e и оставшиеся биты для значение или дробь f . Значение представляется как s * f * 2 e .
Диапазон значений, которые могут быть представлены, определяется количеством битов в показателе степени; чем больше битов в показателе степени, тем шире диапазон возможных значений.
Точность (неофициально, размер промежутка между представимыми значениями) определяется числом битов в значимом. Не все значения с плавающей точкой могут быть представлены точно в данном количестве битов. Чем больше битов у вас в значении, тем меньше разрыв между любыми двумя представленными значениями.
Каждый бит в значении представляет 1/2 n , где n - число битов, считающихся слева:
110100...
^^ ^
|| |
|| +------ 1/2^4 = 0.0625
||
|+-------- 1/2^2 = 0.25
|
+--------- 1/2^1 = 0.5
------
0.8125
Вот ссылка, которую каждый должен был добавить в закладки: Что должен знать каждый учёный-компьютерщик об арифметике с плавающей точкой .