Ich initialisiere ein 2D-Doppel-Array in C++, einige Elemente auf 0 und andere auf 100. Nachdem ich jedoch den Wert initialisiert habe, drucke ich es aus und bekomme wirklich seltsame Zahlen (wie folgende):Einstellung von Doppel in C++ gibt seltsame Zahlen
6.91599e-310
2.96439e-323
6.95262e-310
3.20006e-319
6.52231e-319
4.94066e-324
1.63971e-319
Wie kann ich es so machen, dass das System 0 anstelle davon ausgibt? Ich habe bereits versucht fixed << setprecision(4) << setw(10)
, aber ich werde immer noch Zahlen mit einer Breite viel größer als 10 und mit mehr als 4 Nachkommastellen bekommen. Ich weiß, dass Computer Probleme mit Fließkomma haben, aber warum bekomme ich einige Werte als 0
und andere als die oben genannten gedruckt? Ich bin wirklich verblüfft.
EDIT:
Hier ist meine (relevanten) Code:
void initializeArray (double Array[20][20]) {
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 20; j++) {
if ((j == 0) || (j == 19)) {
Array[i][j] = 0.0;
}
else if ((i == 0) || (i == 19)) {
Array[i][j] = 100.0;
}
}
}
}
void printArray (double Array[20][20]) {
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 19; j++) {
cout << setprecision(4) << fixed << setw(10) << Array[i][j] << ",";
}
cout << setprecision(4) << fixed << setw(10) << Array[i][19] << endl;
}
}
Zum Schließen geschlossen ** fehlendes reproduzierbares Beispiel **. –
Das sind sehr kleine Zahlen, möglicherweise denormalisiert. Bitte zeigen Sie, wie Sie sie einstellen. – krzaq
*** cout << setprecision (4) << feste << setw (10) << Array [20] [20] << endl; *** ist UB. Denken Sie daran, 0 bis 19 sind gültig. 20 liegt außerhalb der Grenzen. – drescherjm