Re: сконвертировать unsigned int в float без потери точности
От: watchmaker  
Дата: 02.12.15 15:53
Оценка: +1
Здравствуйте, B0FEE664, Вы писали:


BFE>Верен ли такой assert:

Нет, конечно.
Например из-за того, что в IEEE754 для числел отдельно хранится мантисса и экспонента. Твоя проверка зависит от изменения экспоненты (читай от умножения n на 2), а точность представления во float — нет (разумеется, до переполнения экспоненты, но это невозможно для unsigned, так как FLT_MAX значительно больше).

А чем тебя такая простая проверка не устраивает?
n == (unsigned)(float)n



Ну а если тебя теория интересует, то критерий представимости unsigned в IEEE754 float будет примерно таким:
Если положить n = t * 2k, где t нечётное или 0, то n будет представим только если t < 224.
Отредактировано 02.12.2015 16:06 watchmaker . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.