numeric_limits<T>::min();
numeric_limits<T>::lowest();
两个函数返回的值有什么不同?
答案 0 :(得分:18)
C ++ 11标准的第18.3.2.4段规定:
static constexpr T min() noexcept
;1最小有限值。
2对于具有非规范化的浮动类型,返回最小正标准化值。
3对所有专业都有意义
[...]
static constexpr T lowest() noexcept
;6有限值x使得没有其他有限值y,其中y <1。 X
7对所有is_bounded的特殊化都有意义!= false。
脚注197然后添加了相关的评论:
lowest()
是必要的,因为并非所有浮点表示都具有最小(最负)的值 最大(最正)有限值的负值。
答案 1 :(得分:8)
对于浮点类型min
,返回类型中可表示> 0
的最小有限数(即具有最低绝对值!= 0
的数字),而lowest
返回可表示的最小有限数(即最小绝对值的负数小于-infinity
)。
答案 2 :(得分:0)
如果您查看这些功能的参考,例如this one for min
和this one for lowest
您可以看到有些值不同。