PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuer Datentyp?



TThomas
10-09-2001, 20:36
Hu da draußen.

Leider hat ein float oder double nur sehr wenige Nachkommastellen (5). Ich brauche jedoch weitaus mehr. Gibt es eine Möglichkeit, einen neuen Datentyp von float abzuleiten, der mehr Nachkommastellen hat?
Oder sonst irgendeine Möglichkeit?(Das ganze unter C++)

Ich bin dankbar über jede Antwort!

Thomas.

Alex_K
10-09-2001, 21:31
ich bin zwar C++ anfänger, aber das kapitel mit den datentypen hab ich schon durch.
und in meinen buch steht folgende tabelle:

Type Wertebereich Genauigkeit
float +-3.4E+38 6 Stellen
doube +-1.7E+308 15 Stellen
long doubel +-1.1E+4932 19 Stellen

TThomas
10-09-2001, 21:34
Irgendwas muss ich falsch machen...
Ich habe bei einem long double nur 5 Nachkommastellen. :-(

Tosk
11-09-2001, 06:51
hallo TThomas,

also es ist schon, wie Alex sagt, nur musst Du es richtig interpretieren: Du hast nur eine bestimmte anzahl von bits, um die mantisse und exponent zu verschlüsseln, somit hättest Du für zahlen kleiner 0 15 nachkommastellen, für die zahlen -1.7E+308 und -1.7E+308 jedoch keine einzige! es kommt eben darauf an, wie hoch der betrag Deiner zahl ist.

aus diesen gründen ist der sorglose umgang mit floats sehr gefährlich, selbst bei einfachen additionen von festkommazahlen...

deswegen empfehle ich Dir, festkommazahlen einzusetzen, um genauigkeiten zu definieren.

viele grüße,
Tosk

ps: vielleicht hilft Dir auch folgende erklärung (http://www-lehre.informatik.uni-osnabrueck.de/~ainf/2000/skript/node18.html)

TThomas
11-09-2001, 13:20
Danke!

TThomas
11-09-2001, 13:21
[ 11. September 2001: Beitrag editiert von: TThomas ]

redhead
14-09-2001, 09:51
Versteh ich nicht, doubles haben mehr als 5 Nachkommastellen. Wird das im Debugger so angezeigt, oder gibst Du die Zahl mit cout aus? Wenn das zweite richtig ist, versuch doch mal den Befehl cout.precision(15), dann werden immer 15 Nachkommastellen angezeigt und der Unterschied zwischen float und double sollte sichtbar werden.

Ciao, redhead

TThomas
15-09-2001, 13:46
Ich gebe die Zahl tatsächlich mit cout aus, das wird das Problem gewesen sein... Ich werde es geich mal mit cout.precision(15) probieren! :-)

Aber noch einmal die Frage nach einem neuen Datentyp:
Angenommen ich will z.B. über das Intervall-Halbierungs-Verfahren näherungsweise einen Wert für Pi auf sagen wir mal 500 Nachkommastellen genau errechnen, wir könnte ich das verwirklichen? Dazu gibt es ja keinen Standartdatentyp, oder? ;-)