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
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....