double Frage
-
Hi,
ich habe folgendes Problem und bin verwirrt:
#include <stdio.h>
int main()
{
double a = 123.0123456789;printf(" Zahl: %f \n",a);
system("PAUSE");
return 0;}
ich will eigentlich nur die Zahl a ausgeben, aber: ich kriege nur angezeigt:
123.012346 (und ja, mit 6 am Ende)...ich verstehs nicht, muss ich double nicht auch über %f oder %g ausgeben? wieso behandelt er a als ob ich es als float definiert hab?!
grüße
-
^^das ist die default-einstellung. mach z.b.
printf(" Zahl: %.100f \n",a);
-
hmm, okay danke. was hat es genau mit der default-einstellung auf sich?! ich kann doch nicht für jede rechnung wo ich double verwenden will %.100f oder so schreiben...wie krieg ichs hin, dass er wirklich auch die zahlen nimmt(halt so weit wie der zahlenbereich maximal läuft) die gegeben sind. ich weiß ja nicht wie viele nachkommastellen meine zahlen in etwas komplexeren rechnungen kriegen...
-
;fricky schrieb:
^^das ist die default-einstellung. mach z.b.
printf(" Zahl: %.100f \n",a);
Was 100 Stellen wohl bei einer ca. 7-8 stelligen Genauigkeit bringen
chmbw schrieb:
wie krieg ichs hin, dass er wirklich auch die zahlen nimmt(halt so weit wie der zahlenbereich maximal läuft) die gegeben sind. ich weiß ja nicht wie viele nachkommastellen meine zahlen in etwas komplexeren rechnungen kriegen...
Eine Möglichkeit ist, die Stellen zu ermitteln und dynamische Formatstrings zu erzeugen, oder automatisch machen lassen:
printf(" Zahl: %G \n",f);
-
ich wollte es automatisch lassen, wenn ich aber folgenden code hab:
#include <stdio.h>
int main()
{
double a = 123.0123456789;printf(" Zahl: %G \n",a);
system("PAUSE");
return 0;}
kriege ich trotzdem nur 123.012 ausgegeben....liegt das vielleicht an meinem Compiler oder ähnlichem?! ach ja, eine Frage dann gleich an der Stelle: für was GENAU steht %g bzw %G und wo sind die Unterschiede zwischen %g und %G?
Grüße
-
%g oder %G zeigen das 'e' gross oder klein an, exponentialdarstellung, z.b. 1e7 oder 1E7 (kann mich aber auch irren).
-
das war soweit ich weiß %e und %E
-
chmbw schrieb:
das war soweit ich weiß %e und %E
bei e und E macht printf immer exponentialausgabe, bei g und G kann es sich aussuchen, was besser passt.
-
ah, wunderbar, wieder was gelernt
aber wieso wird nach wie vor meine zahl a so komisch, sprich nicht komplett, dargestellt
-
chmbw schrieb:
aber wieso wird nach wie vor meine zahl a so komisch, sprich nicht komplett, dargestellt
ich glaub, wenn du %f nimmst, passts doch meistens.
oder probier mal *printf ("%.f", x, a), dabei ist x eine variable, die die anzahl der kommastellen ausgibt. (sowas kann aber nicht jedes 'printf')
-
Hi,
wenn Duprintf("%lf", a);
nimmst bekommst Du auch mehr Stellen angezeigt. Das f steht für float, das l für long - und damit long float.
Gruß
-
Ampfing schrieb:
Hi,
wenn Duprintf("%lf", a);
nimmst bekommst Du auch mehr Stellen angezeigt. Das f steht für float, das l für long - und damit long float.
^^aber genauer wird dadurch auch nicht.