爲什麼的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被定義爲能夠被該類型準確表示的最小*正數*數。 –