2013-04-03 3 views

ответ

16

Пункт 18.3.2.4 из C++ 11 стандарт устанавливает:

static constexpr T min() noexcept;

1 Минимальное конечное значение.

2 Для плавающих типов с денормализацией возвращает минимальное положительное нормализованное значение.

3 Значимое для всех специализаций

[...]

static constexpr T lowest() noexcept;

6 Конечное значение x, для которого нет другого конечного значения y, где y < x.

7 Значение для всех специализаций, в которых is_bounded! = False.

Сноска 197 добавляет соответствующее замечание:

lowest() необходимо потому, что не все с плавающей точкой представления имеют наименьший (наиболее отрицательное) значение, которое является отрицательное из крупнейших (самый позитивный) конечное значение.

+1

+1 для точной цитаты из стандарта менее чем за 5 минут. – Morwenn

+0

в другом слове 'lower' возвращает что-то вроде дополнения 2s для максимального положительного целого числа. –

+1

@Muhammadalaa: для целых типов нет разницы между 'min()' и 'lower()'. –

0

Если вы проверите ссылку на эти функции, например. this one for min и this one for lowest вы можете видеть, что существуют некоторые значения, которые отличаются.

8

Для плавающих типов min возвращает наименьшее конечное число, которое > 0 представима в типа (то есть число, имеющее самое низкое абсолютное значение != 0), тогда как lowest возвращает наименьшее конечное число, что представима (то есть отрицательное число максимальных абсолютных значение меньше -infinity).

+1

Наименьшее число, которое является представимым, является отрицательной бесконечностью; 'lower' дают наименьшее ** конечное ** представимое значение. –

+0

Отредактировано, спасибо за комментарий. – filmor

Смежные вопросы