numeric_limits<T>::min();
numeric_limits<T>::lowest();
两个函数返回的值有什么不同?
numeric_limits<T>::min();
numeric_limits<T>::lowest();
两个函数返回的值有什么不同?
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()
是必要的,因为并非所有浮点表示都有一个最小(最负)值,它是最大(最正)有限值的负值。
对于浮点类型min
,返回类型中可> 0
表示的最小有限数(即具有最低绝对值的数!= 0
),同时lowest
返回可表示的最小有限数(即小于 的最大绝对值的负数-infinity
)。
如果您检查这些功能的参考,例如this one formin
和this one forlowest
您可以看到有一些不同的值。