【问题标题】:numeric_limits lowest and min member functionsnumeric_limits 最低和最低成员函数
【发布时间】:2013-03-24 21:26:25
【问题描述】:
numeric_limits<T>::min();
numeric_limits<T>::lowest();

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

【问题讨论】:

标签: c++ c++11 stl standard-library


【解决方案1】:

如果您检查这些函数的参考,例如this one for minthis one for lowest 可以看到有些值不同。

【讨论】:

    【解决方案2】:

    对于浮点类型,min 返回该类型中可表示的&gt; 0 的最小有限数(即具有最低绝对值!= 0 的数),而lowest 返回可表示的最小有限数(即小于-infinity的最大绝对值的负数。

    【讨论】:

    • 可表示的最小数是负无穷大; lowest 给出最小的有限可表示值。
    【解决方案3】:

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

    static constexpr T min() noexcept;

    1 最小有限值。

    2 对于具有非规范化的浮点类型,返回最小正规范化值。

    3 对所有专业都有意义

    [...]

    static constexpr T lowest() noexcept;

    6 一个有限值 x,使得在 y

    7 对于 is_bounded != false 的所有特化都有意义。

    脚注197然后添加相关备注:

    lowest() 是必要的,因为并非所有浮点表示都有一个最小(最负)值,即 最大(最正)有限值的负数。

    【讨论】:

    • 换句话说,lowest 返回最大正整数的 2s 补码。
    • @Muhammadalaa:对于整数类型,min()lowest() 之间没有区别。
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2017-09-29
    • 2011-01-01
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多