numeric_limits lowest and min member functions

雨燕双飞 提交于 2019-12-01 02:21:55

Paragraph 18.3.2.4 of the C++11 Standard specifies:

static constexpr T min() noexcept;

1 Minimum finite value.

2 For floating types with denormalization, returns the minimum positive normalized value.

3 Meaningful for all specializations

[...]

static constexpr T lowest() noexcept;

6 A finite value x such that there is no other finite value y where y < x.

7 Meaningful for all specializations in which is_bounded != false.

Footnote 197 then adds the relevant remark:

lowest() is necessary because not all floating-point representations have a smallest (most negative) value that is the negative of the largest (most positive) finite value.

For floating point types min returns the smallest finite number that is > 0 representable in the type (i.e. the number having the lowest absolute value != 0) while lowest returns the smallest finite number that is representable (i.e. the negative number of maximal absolute value that is less than -infinity).

If you check a reference of these functions, e.g. this one for min and this one for lowest you can see that there are some values that differ.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!