numeric_limits::min が int に対して負の値を返すのに、float や double などに対して正の値を返すのはなぜですか?
#include<iostream>
#include<limits>
using namespace std;
int main() {
cout << "int: " << numeric_limits<int>::min() << " "
<< "float: " << numeric_limits<float>::min() << " "
<< "double: " << numeric_limits<double>::min() << "\n";
return 0;
}
出力:
int: -2147483648 float: 1.17549e-38 double: 2.22507e-308
cppreference から:
数値型 T で表現可能な最小の有限値を返します。
非正規化を伴う浮動小数点型の場合、min は正規化された正の最小値を返します。この動作は、特に整数型の min の動作と比較すると、予想外の場合があることに注意してください。それより小さい値がない値を見つけるには、 を使用します
numeric_limits::lowest
。min は、制限付きの型と制限なしの符号なし型の場合にのみ意味があります。つまり、負の値の無限のセットを表す型には、意味のある最小値がありません。