Warum macht numeric_limits :: min einen negativen Wert für int, aber positive Werte für z. schweben und doppelt?Warum gibt numeric_limits :: min einen negativen Wert für int zurück, aber positive Werte für 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;
}
Ausgang:
int: -2147483648 float: 1.17549e-38 double: 2.22507e-308
Von cppreference:
Gibt den minimalen endlichen Wert darstellbare vom numerischen Typ T.
Für Gleitkommatypen mit Denormalisierung , min gibt das Minimum positive nein zurück erwarteter Wert. Beachten Sie, dass dieses Verhalten möglicherweise unerwartet ist, insbesondere im Vergleich zu dem Verhalten von min für integrale Typen. Um den Wert zu finden, der keine Werte hat, die kleiner sind, verwenden Sie
numeric_limits::lowest
.min ist nur sinnvoll für beschränkte Typen und für unbeschränkte unsigned Typen, das heißt, die Art, das eine unendliche Menge negativer Werte haben keine sinnvolle Mindest darstellen.
Für Fließkommawerte wird min als die kleinste * positive * Zahl definiert, die von diesem Typ genau dargestellt werden kann. –