Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Expotentiale schreibweise

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
23.04.2013, 17:53 Uhr
bro



tag auch,
und zwar habe ich folgendes problem:
ich möchte eine zahl in double eingeben und im expotential format ausgeben lassen und dies mit 5 Stellen vor den Komma und 7 Stellen nach dem Komma aber irgendwie klappt das alles nicht.
kann mir jemand helfen?

mfg bro
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.04.2013, 19:09 Uhr
~f.-th.
Gast


In welcher Programmiersprache?
Ein Beispiel mit wenigen Zeilen sollte kein Problem sein um deinen Versuch zu zeigen.

Zeig mal deinen Quelltext.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2013, 19:11 Uhr
Tommix



Hallo,
was genau klappt nicht? Und: C oder C++? C wäre z.B.:

C++:
double d;
scanf("%lf", &d);
printf ("%13.7f\n", d);



Gruß, Tommix


Bearbeitung:

a) zu langsam und
b) es muss e statt f heißen.


Dieser Post wurde am 23.04.2013 um 19:33 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.04.2013, 16:42 Uhr
bro



in C fange ich grade an zu programmieren, eigentlich sollte das ja nicht so schwer sein aber irgendwie...

#include <stdio.h>
#include <math.h>

int main() { /*123456789.1234567e+123*/
double a;
a = 123456789.1234567e+123;
printf("a = %5.7e\n", a);


system("Pause");
return 0;
}


also man soll 123456789.1234567e+123 zum beispiel eingeben und 12345.6789123e+127 soll er dann ausgeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.04.2013, 22:28 Uhr
~f.-th.
Gast


123456789.1234567e+123

- okay hätte ich jetzt nicht erwartet.

Wie viel ist 2 hoch 32? Oder hast du schon ein 64bit System oder noch etwas grösseres am Start?

Warum so viele Stellen nach dem Komma, wenn du eh mit Exponenten hantierst?
Stellen nach dem Komma machen oft Stress - also möglichst vermeiden. Dies ist in deinem Fall besonders kritisch weil du mit 16 Dezimalstellen jonglierst.

Denke nicht das man da serienmässig beim Compiler etwas findet. Entweder selbst das Zeug schreiben oder entsprechende Zusatz-Bibiotheken einbinden.

Die Mädels und Jungs, die mit Astronomie herum machen sollten da Lösungen dafür haben.

Hast dir für einen Anfänger ganz schön etwas vor genommen.
Wie genau bekommst du das mit den Nachkommastellen hin? Die Ergebnisse genau überprüfen - das musst du beim schreiben einfacher Quelltexte schon entsprechend berücksichtigen!
Dann die 16 Dezimalstellen angehen.

Viel Spass f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.04.2013, 06:28 Uhr
Hans
Library Walker
(Operator)


Hi,

also eigentlich sollte das funktionieren, da double ja mit 16 Ziffern Genauigkeit arbeitet. Tatsächlich lieferte der Open Watcom Compiler bei einem kurzen Test aber auch nur Unsinn.

Und was die Astronomie angeht: Die Profis mögen mit BigNumbers Bibliotheken arbeiten, das kann angehen. Aber selbst für ambitionierte Hobbyastronomen scheinen sie nicht nötig zu sein. Jedenfalls haben Montebruck und Pfleger ihrem Buch keine BigNum-Bibliothek beigegeben.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.04.2013, 10:15 Uhr
~f.-th.
Gast


Hab gerade noch mal ein wenig gesucht.
Je nach Zahl und Compiler sollen 15 bis 16 Stellen bei double möglich sein laut MSDN.

Viele Beiträge, die die Suche findet, finden nur 5 oder 6 Nachkomma-Stellen.

Ohne Test: Es kann sein, wenn man eine Mathe-Bibliothek einbindet und den Mathe-Header setzt, das dann erst die theoretisch möglichen Grenzen realisierbar sind. Man kann das ja erst mal mit der Mathe-Bibliothek des Compilers versuchen. Das kann auch Compiler-abhängig sein!

Dein Beispiel auf dem gcc und anderen ohne Bibliothek und Header:

C++:
#include <stdio.h>
// #include <math.h>

int main()
{ /*123456789.1234567e+123*/
  double a;
  a = 123456789.1234567e+123;
  printf("a = %5.7e\n", a);
  printf("a = %1.15e\n", a);


  system("Pause");
  return 0;
}


Der gcc macht daraus auf einem 32bit Windows eine Stelle vor dem Komma und den Rest danach. Also die 2te Ausgabezeile 15 Stellen nach dem Komma. Ebenso der Digital Mars und der Tiny C.

Der Open Watcom und der Borland free BCC 5.5 streiken.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.04.2013, 13:20 Uhr
Tommix



Hallo,
also zunächst mal gibt die Zahl vor dem Dezimalpunkt die minimale Gesamtbreite an und nicht etwa die Stellen vor dem Komma - die ist immer 1. Ein Format das etwas wie 23.45E-4 ausgibt, ist mir nicht bekannt - und darauf lief die Frage wohl hinaus. Auch gelegentlich gefragt wird ein "technisches" Format, bei dem der Exponent durch 3 teilbar ist. Gibt es aber auch nicht von der Stange.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.04.2013, 20:12 Uhr
bro



mhhh ok also wenn ich das jetzt richtig verstehe geht das nicht so ohne weiteres.
muss ich villt alles einzeln eingeben oder...
 
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: