Как конвертировать поплавок в двойную работу?

double может представлять каждое значение, которое может представлять float.

Разве преобразование числа с плавающей запятой в двойное просто расширяет мантиссу, добавляя 0, и расширяет экспонентную часть, заполняя биты знака?

Я проверил некоторые данные на http://www.binaryconvert.com/index.html. Это работает таким образом. Но я не нашел никакого официального определения конверсии. Есть ли у конвертации какой-либо угловой случай, не работающий таким образом?

1 ответ

Это имеет очень мало общего с C; его единственная гарантия заключается в том, что преобразование из float в double должен сохранить значение.

Таким образом, вы действительно спрашиваете о (предположительно) IEEE-754. Есть по крайней мере несколько способов, которыми ваше описание не выполняется:

  1. Экспоненты для одинарной и двойной точности имеют различные отклонения. Таким образом, преобразование требует больше, чем просто расширение знака.

  2. Денормальные числа требуют специальной обработки (они становятся нормальными числами).

  3. NaN также могут требовать специальной обработки - различие между сигнализацией и тихим NaN зависит от значения мантиссы.

Другие вопросы по тегам