numeric_limits最低和最低成员函数

Muh*_*mad 19 c++ stl standard-library c++11

numeric_limits<T>::min();
numeric_limits<T>::lowest();
Run Code Online (Sandbox Code Playgroud)

两个函数返回的值有什么不同?

And*_*owl 19

C++ 11标准的第18.3.2.4段规定:

static constexpr T min() noexcept;

1最小有限值.

2对于具有非规范化的浮动类型,返回最小正标准化值.

3对所有专业都有意义

[...]

static constexpr T lowest() noexcept;

6有限值x,使得y <x时没有其他有限值y.

7对所有is_bounded的特殊化都有意义!= false.

脚注197然后添加了相关的评论:

lowest() 是必要的,因为并非所有浮点表示都具有最小(最负)的值,该值是最大(最正)有限值的负值.

  • @Muhammadalaa:对于整数类型,`min()` 和 `lowest()` 之间没有区别。 (2认同)

fil*_*mor 8

对于浮点类型,min返回在类型中可> 0表示的最小有限数(即具有最低绝对值的数字!= 0),同时lowest返回可表示的最小有限数(即,小于的最大绝对值的负数-infinity).

  • 可表示的最小数是负无穷大;`lowest` 给出最小的 **finite** 可表示值。 (3认同)