Посмотрите на эти статьи для одинарной точности и двойной точности поплавков. Прежде всего, числа с плавающей запятой имеют 8 бит для показателя степени против 11 для двойного. Таким образом, все, что больше 10 ^ 127 или меньше 10 ^ -126 по величине, будет переполнением, как вы упоминали. Для числа с плавающей точкой у вас есть 23 бита для фактических цифр числа, против 52 битов для двойного. Очевидно, что у вас есть намного больше цифр точности для двойного, чем число с плавающей точкой.
Скажем, у вас есть такой номер, как: 1.1123. На самом деле это число не может быть закодировано как 1.1123, потому что цифры в числе с плавающей запятой используются, чтобы фактически сложить как дроби. Например, если ваши биты в мантиссе были 11001, то значение будет образовано 1 (неявным) + 1 * 1/2 + 1 * 1/4 + 0 * 1/8 + 0 * 1/16 + 1 * 1/32 + 0 * (64 + 128 + ...). Таким образом, точное значение не может быть закодировано, если вы не можете сложить эти дроби таким образом, чтобы это было точное число. Это редко. Поэтому почти всегда будет потеря точности.