Подтвердить что ты не робот

Получите минимальное значение NEGATIVE float в С++

Я смотрел на std::numeric_limits<float>::min/max(), но, похоже, "min()" возвращает наименьшее абсолютное значение, а не самое низкое значение. Безопасно ли использовать

-std::numeric_limits<float>::max(), т.е. является симметричным по плаванию в пределах min/max?

4b9b3361

Ответ 1

Числа с плавающей запятой IEEE 754 используют знаковый бит для подписки (а не что-то вроде дополнения twos), поэтому, если вы уверены, что ваш компилятор/платформа использует это представление (очень часто), вы можете использовать -std::numeric_limits<float>::max() как вы подозревали.

Ответ 2

использовать std:: numeric_limits:: lower()

static _Ty __CRTDECL lowest() _THROW0()
    {   // return most negative value
    return (-(max)());
    }

Ответ 3

Да, float является симметричным по минимальным/максимальным значениям.

Если вы используете наименьшее представляемое значение в качестве начального значения при поиске списка для его максимального значения, рассмотрите возможность использования бесконечности.

std::numeric_limits<T>::has_infinity() вернет true для любого числового типа, который имеет его, а std::numeric_limits<T>::infinity() вернет значение, которое всегда оценивает больше любого другого значения, отличного от NaN для этого типа. Это значение можно отрицать и будет оценивать меньше всего.