Seite 1 von 2

ValF() ??

Verfasst: 08.09.2010 22:23
von The_Dark_Zim-.-
Hey ho,
eine kurze Frage zu ValF()
Warum wird aus ValF("787878778e-10") = "0.07878787815571",
müsste das nicht eigentlich "0.0787878778" werden?

Gruß Zim

Re: ValF() ??

Verfasst: 08.09.2010 22:38
von NicTheQuick
Eine altbekannte Frage. Siehe Wikipedia, genauer gesagt hier.

Re: ValF() ??

Verfasst: 08.09.2010 22:43
von The_Dark_Zim-.-
-.- doofe Computer. Aber das muss man umgehen können Oo. Immerhin ist das richtige Ergebniss aus "WolframAlpha" und da sitzt sicher kein Mensch am rechnen ;)

Re: ValF() ??

Verfasst: 08.09.2010 22:51
von Kevin
mal ne frage wieso ist das ergebniss von valf genauer als das von vald?

Code: Alles auswählen

Debug  ValF("787878778e-10")
Debug  ValD("787878778e-10")
Debug 0.07878787815571

Re: ValF() ??

Verfasst: 08.09.2010 22:53
von The_Dark_Zim-.-
Mehr platz für Fehler :D
keine ahnung

Re: ValF() ??

Verfasst: 08.09.2010 22:54
von Kevin
sry hab nen fehler gemacht
hab die "" vergessen

so klappts
Debug ValD("787878778e-10")
Debug "0.0787878778"

Re: ValF() ??

Verfasst: 08.09.2010 23:01
von The_Dark_Zim-.-
Okey "WolframAlpha" rechnet auch nur bei Zahlen unter 17 Ziffern...

Re: ValF() ??

Verfasst: 08.09.2010 23:09
von STARGÅTE
WolframAlpha oder besser Mathematica benutzen auch Floats/Doubles nur intern für schnelle Rechnungen.
Bei Sachen die ausgegeben werden, wird eine andere Klasse von Zahlen verwendet, welche Dizimalzahlen auf beliebig genaue Stellen darstellen kann:

WolframAlpha: N[1/7,1000]

Dort kann ich sagen er soll 1/7 wirklich auf 1000 stellen berechnen.

Für ProgrammierinterneSachen ist eine solche genauigkeit *für n Arsch*

Re: ValF() ??

Verfasst: 08.09.2010 23:27
von X360 Andy
STARGÅTE hat geschrieben:WolframAlpha oder besser Mathematica benutzen auch Floats/Doubles nur intern für schnelle Rechnungen.
Bei Sachen die ausgegeben werden, wird eine andere Klasse von Zahlen verwendet, welche Dizimalzahlen auf beliebig genaue Stellen darstellen kann:
Strings nehme ich an?

Re: ValF() ??

Verfasst: 08.09.2010 23:41
von STARGÅTE
Nein, zumindest nicht im Speicher.

Mag sein, dass sie die Zahl am ende als String ausgeben lassen.
Jedoch wird die Zahl 1/7 mit 1000 Stellen als anhäufung von Longs/Quads gespeichert ...

zB gibt mit der Speicherverbrauch 472 Bytes zurück. (Statt 1000 noch was, was der String an sich hätte)

Anders Beispiel:

Lasse ich Mathematica 2^8000 errechnen, erhalte ich eine Länge von 1032 Bytes ...
Das lässt darauf schließen, das hier Byte-Arrays oder Long-Array ... benutzt werden:

2^8000 = 4^4000 = 16^2000 = 256^1000

also 1000 Bytes für die 256er und 32Byte als Header oder so....