double genauigkeit bei scanf und printf
-
Hallo!
Irgendwie blicke ich nicht mehr ganz durch: normalerweise hat double doch eine höhere Genauigkeit als float. Prinzipiell sollte doch ein double auch solche Werte wie 4.0000000000000001 (4+10^(-16)) speichern können.Ich habe mal ein kleines Testprogramm geschrieben:
int main(int argc, char* argv[]) { double d; scanf("%lf", &d); printf("d = %lf\n", d); return 0; }
Wenn ich nun 4.0000000000000001 eingebe, dann kommt bei der Ausgabe wieder nur 4.000000 (6 Nachkommastellen). Was mache ich falsch? %lf müsste doch für double richtig sein...
Danke schonmal für alle Antworten im Voraus.
-
hi,
du musst als erstes d auf 0.0 setzten, sonst steht da shit drin.
dann gibst du printf die anzahl der nachkommastellen an, die ausgegeben werden
sollen, und zwar mit %.16lf .#include <stdio.h> int main(int argc, char* argv[]) { double d=0.0; scanf("%lf", &d); printf("d = %.16lf\n", d); return 0; }
sersn
-
/bin/bash0R schrieb:
du musst als erstes d auf 0.0 setzten, sonst steht da shit drin.
Das ist egal, da ja bei scanf() richtig gesetzt wird...
Gibt es eine Möglichkeit nur alle relevanten Nachkommastellen auszugeben? Also die maximale Anzahl ohne restliche Nullen.