Dlaczego numer: numeric_limits :: min zwraca wartość ujemną dla int, ale wartości dodatnie dla np. pływak i podwójne?Dlaczego liczba_kamców :: min zwraca wartość ujemną dla int, ale wartości dodatnie dla wartości zmiennoprzecinkowej/podwójnej?
#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;
}
wyjściowa:
int: -2147483648 float: 1.17549e-38 double: 2.22507e-308
Od cppreference:
Zwraca minimalną wartość skończoną reprezentowalna przez numeryczną typu T.
Dla typów zmiennoprzecinkowych z denormalizacji , min zwraca min. pozytywny nie spersonalizowana wartość. Należy zauważyć, że to zachowanie może być nieoczekiwane., , szczególnie w porównaniu do zachowania min dla typów integralnych. Aby znaleźć wartość, która nie ma wartości mniejszej niż , użyj
numeric_limits::lowest
.min ma znaczenie tylko dla typów ograniczonych i dla typów nieograniczonych bez znaku, to znaczy, że typy reprezentujące nieskończony zestaw wartości ujemnych nie mają znaczącego minimum.
Dla wartości zmiennoprzecinkowych wartość min określa się jako najmniejszą * dodatnią * liczbę, która jest dokładnie reprezentowana przez dany typ. –