numeric_limits
Questa classe template fornisce varie informazione sui tipi di dati built-in
I limiti dei valori numerici sono definiti nell'header <limits>. I valori "templated" di numeric_limits danno una rappresentazione numerica dipendente dal sistema dei tipi dati del C++. Usate la funzione appropriata per un certo tipo di dati come argomento del template così come mostrato nella tabella qui sotto. Notate che numeric_limits può anche essere definita in overload per adattarla a tipi di dati definiti dal programmatore.
| Metodo o costante |
Valore ritornato | Descrizione |
|---|---|---|
| is_specialized | bool | |
| radix | int | base dell'esponente |
| digits | int | numero di digit (per una data radix) nella mantissa |
| digits10 | int | numero di digit a base 10 digits nella mantissa |
| is_signed | bool | |
| is_integer | bool | |
| is_exact | bool | |
| min() | <type> | il più piccolo numero rappresentabile (non il più negativo) |
| max() | <type> | il più grande numero rappresentabile |
| epsilon() | <type> | errore inerente, cioè il numero più piccolo per cui 1 + epsilon > 1 |
| round_error() | <type> | valore massimo possibile di arrotondamendo |
| infinity() | <type> | |
| quiet_NaN() | <type> | numero invalido usato per segnalare un errore di floating point |
| signaling_NaN() | <type> | numero invalido usato per segnalare un errore di floating point |
| denorm_min() | <type> | |
| min_exponent | int | |
| min_exponent10 | int | |
| max_exponent | int | |
| max_exponent10 | int | |
| has_infinity | bool | |
| has_quiet_NaN | bool | |
| has_signaling_NaN | bool | |
| has_denorm | <type>_denorm_style | |
| has_denorm_loss | bool | |
| is_iec559 | bool | è conforme alle specifiche IEC-559 |
| is_bounded | bool | |
| is_modulo | bool | |
| traps | bool | |
| tinyness_before | bool | |
| round_style | float_round_style { round_to_nearest, ... } |
L'uso più comune di questa classe è nel controllo dei limiti (bounds) per determinare i valori minimi e massimi che un certo tipo di dati può rappresentare. Il codice che segue stampa i valori massimi e minimi per un intero short sul sistema su cui gira.
#include <limits> std::cout << "Maximum short value: " << std::numeric_limits<short>::max() << std::endl; std::cout << "Minimum short value: " << std::numeric_limits<short>::min() << std::endl;