Ich habe eine Frage über das Zitat unten (N3797, 3.9.1/8):Wie werden die oberen und unteren Grenzen für Fließkommazahlen bestimmt?
Der Wert Darstellung Gleitkommatypen ist implementierungsdefiniert ist.
Soweit ich verstehe, es gibt die Umsetzung völlige Freiheit Grenzen Gleitkommazahlen bei der Definition. Sie sind in template<class T> class numeric_format
angegeben. Zum Beispiel
#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;
}
Meine Frage ist: Kann man obere und untere Grenze für sein Gleitkommazahlen beliebig hoch oder niedrig ist, oder gibt es Einschränkungen? Bietet pure C auch eine Implementierung definierte Menge von Werten für Fließkommazahlen?
Ich vermute, es hängt von der Architektur ab, mit der wir arbeiten.
Haben Sie sich den C-Standard angesehen? (Es ist wesentlich kürzer als das C++.) –
@OliverCharlesworth Ja, habe ich. Der C-Standard definiert FLT_MAX, FLT_MIN usw. als mehr als und weniger als 1E37, 1E-37 entsprechend, während der C++ Standard dies nicht tut. –