Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Warum gibt double nur 6 Nachkommastellen aus?!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.12.2009, 00:41 Uhr
~chmbw
Gast


Hallo,

ich habe ein kleines Problem mit double:

C++:
#include <stdio.h>

int main()
{
  double a = 123.123456789;

  printf("zahl a = %f\n",a);

  system("PAUSE");
  return 0;
}



so schaut mein Code aus. Er gibt mir allerdings nur:

123.123457 aus, sprich nur 6 Nachkommastellen. Warum?! ich könnte jetzt tricksen und %.10f oder so schreiben, aber das will ich nicht, da ich ja in Berechnungen etc. nie genau weiß, wie viele Nachkommastellen eine Zahl hat. Geht das nicht irgendwie "dynamisch"? Hoffe es kann mir wer weiterhelfen!

Grüße

Bearbeitung von 0xdeadbeef:

cpp-Tags eingefügt. Nächstes mal selbst machen.


Dieser Post wurde am 08.12.2009 um 01:41 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.12.2009, 01:54 Uhr
0xdeadbeef
Gott
(Operator)


Du kannst mit

C++:
printf("zahl a = %.*f", praezision, a);


die auszugebenden Nachkommastellen zur Laufzeit angeben. Es gibt allerdings keine Möglichkeit, "gib alle vorhandenen Stellen aus" anzugeben. Das ergäbe auch keinen Sinn, weil die Anzahl der auszugebenden Stellen ziemlich oft unendlich wäre - viele Werte, die double annehmen kann (binär gespeichert) haben in dezimaler Darstellung unendlich viele Nachkommastellen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.12.2009, 20:38 Uhr
~chmbw
Gast


Hi,

herzlichen Dank für deine Antwort! Heißt das aber, dass wenn ich mich double Rechnungen ausführe, er aber trotzdem mit den 19 nachkommastellen rechnet, auch wenn printf nicht alle ausgibt?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.12.2009, 21:15 Uhr
0xdeadbeef
Gott
(Operator)


Die Ausgabe hat mit der Berechnung nichts zu tun. Wie dein Rechner Fließkommazahlen speichert und mit ihnen rechnet, kannst du hier nachlesen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.12.2009, 21:25 Uhr
~chmbw
Gast


herzlichen dank, ich lese es mir gleich mal durch!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: