为什么的numeric_limits :: min为int返回一个负值,但是例如为正值则为int。浮动和双重?为什么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行为进行比较时。到 找到没有小于它的值的值,使用
numeric_limits::lowest
。min仅对有界类型有意义,对于无界无符号类型则为 ,也就是说,表示无限值负值的 类型没有有意义的最小值。
对于浮点值,min被定义为能够被该类型准确表示的最小*正数*数。 –