Perché fa numeric_limits :: min restituisce un valore negativo per int, ma valori positivi per es. fluttuare e raddoppiare?Perché numeric_limits :: min restituisce un valore negativo per int ma valori positivi per 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;
}
uscita:
int: -2147483648 float: 1.17549e-38 double: 2.22507e-308
Da cppreference:
Restituisce il rappresentabile minimo valore finito per il tipo T. numerico
Per i tipi a virgola mobile con denormalizzazione , min restituisce il numero minimo positivo valore rmalizzato. Si noti che questo comportamento potrebbe essere inaspettato, in particolare se confrontato con il comportamento di min per i tipi interi. Per trovare il valore che non ha valori inferiori, utilizzare
numeric_limits::lowest
.min è significativo solo per i tipi con limiti e per tipi senza segno senza limiti, ovvero i tipi che rappresentano un insieme infinito di valori negativi non hanno un minimo significativo.
Per i valori in virgola mobile, min è definito come il più piccolo * numero * positivo che è esattamente rappresentabile da quel tipo. –