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 y < x である他の有限値 y が存在しないような有限値 x。
7 is_bounded != false であるすべての特殊化に意味があります。
脚注 197 には、関連するコメントが追加されています。
lowest()
すべての浮動小数点表現が、最大 (最も正の) 有限値の負である最小 (最も負) の値を持つわけではないため、必要です。
浮動小数点型の場合、その型min
で表現可能な最小の有限数> 0
(つまり、最小の絶対値を持つ数値!= 0
) をlowest
返し、表現可能な最小の有限数 (つまり、最大絶対値が より小さい負の数) を返します-infinity
。
これらの関数の参照を確認すると、たとえば、これは for でmin
あり、これは forlowest
であり、いくつかの値が異なることがわかります。