Ho una domanda circa il prezzo di sotto (N3797, 3.9.1/8):Come vengono determinati i limiti superiore e inferiore per i numeri in virgola mobile?
La rappresentazione valore di tipi a virgola mobile è definito dall'implementazione.
Per quanto mi risulta dà l'attuazione completa libertà nel definire i confini di numeri in virgola mobile. Sono specificati in template<class T> class numeric_format
. Per esempio,
#include <iostream>
#include <limits>
int main()
{
std::cout << "double_max = " << std::numeric_limits<double>().max() << std::endl;
std::cout << "double_min = " << std::numeric_limits<double>().min() << std::endl;
std::cout << "float_max = " << std::numeric_limits<float>().max() << std::endl;
std::cout << "float_min = " << std::numeric_limits<float>().min() << std::endl;
}
La mia domanda è: i confini Can superiori e inferiori per il galleggiamento numeri in virgola essere arbitrariamente alto o basso, o ci sono delle restrizioni? puro C fornisce anche un insieme definito di valori di implementazione per i numeri in virgola mobile?
Sospetto che dipenda dall'architettura con cui stiamo lavorando.
Avete dato uno sguardo allo standard C? (È sostanzialmente più corto di quello C++). –
@OliverCharlesworth Sì, l'ho. Lo standard C definisce FLT_MAX, FLT_MIN e così via come più e meno quindi 1E37, 1E-37, nel frattempo, mentre lo standard C++ no. –