Здравствуйте, B0FEE664, Вы писали:
BFE>Верен ли такой assert:
Нет, конечно.
Например из-за того, что в IEEE754 для числел отдельно хранится мантисса и экспонента. Твоя проверка зависит от изменения экспоненты (читай от умножения n на 2), а точность представления во float — нет (разумеется, до переполнения экспоненты, но это невозможно для unsigned, так как FLT_MAX значительно больше).
А чем тебя такая простая проверка не устраивает?
n == (unsigned)(float)n
Ну а если тебя теория интересует, то критерий представимости unsigned в IEEE754 float будет примерно таким:
Если положить n = t * 2
k, где t нечётное или 0, то n будет представим только если t < 2
24.