5 Stimmen

Die Anzahl der Präzisionsziffern für double in C++ ist unter Windows und Linux unterschiedlich. Warum? Linux zeigt mehr als 20 Nicht-Null-Präzisionsziffern an

Ich habe das gerade getan:

double val1=numeric_limits<double>::max();
cout.precision(70);
cout<<"\nVal1: "<<val1;

Unter Windows erhalte ich nach 17 Ziffern (16 Ziffern nach dem Dezimalpunkt) 0s. Wenn ich jedoch unter Linux die cout.precision(NUMBER) erhöhe, werden mehr und mehr Ziffern angezeigt, die keine Nullen sind.

Außerdem zeigt die Ausführung des folgenden Codes sowohl unter Windows als auch unter Linux "15" an. Das Windows-System ist ein 32-Bit-System und das Linux-System ein 64-Bit-System, falls das einen Unterschied macht.

typedef std::numeric_limits< double > dl;
cout << "\tdigits (decimal):\t" << dl::digits10 << endl;

Kann mir jemand erklären, was hier los ist? Ich dachte, die Anzahl der Präzisionsstellen ist unter Windows und Linux gleich, da sizeof(double) in beiden Fällen 8 ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X