Seite 1 von 1
StrD()
Verfasst: 14.02.2008 17:10
von STARGÅTE
Tachchen,
mir ist gerade aufgefallen das StrD() immer nur "Standard" 10 Dezimal Stellen ausgibt. Erst wenn man selber sagt das es mehr sein sollen werden mehr angezeigt.
Sollte man nicht Standardmäßig einstellen das StrD() alle verfügbaren Stellen nimmt ?
Verfasst: 14.02.2008 17:40
von jear
result$ = "Ergebnis: " + StrD(value) ; wir verwenden nicht den 2. Parameter, bekommen deshalb die volle Fließkommazahl
Hilfe und Realität gehen da aber nicht konform!
Verfasst: 14.02.2008 20:20
von Kaeru Gaman
hm...
> Sollte man nicht Standardmäßig einstellen das StrD() alle verfügbaren Stellen nimmt ?
ist ein wenig widersinnig, oder?
PI ist ein nicht endender, nicht periodischer dezimalbruch.
(was übrigens auf alle irrationalen zahlen zutrifft)
beim übersetzen einer endlichen, base2 gespeicherten zahl in eine base10 darstellung,
kann relativ oft ein nicht-endlicher dezimalbruch heruskommen.
also, wo soll StrD() dann schluss machen..
bei 64KB stringlänge? oder wenn der speicher voll ist?
imho ist eine standard begrenzung auf 10nks durchaus sinnvoll, sollte man halt mal die Help anpassen.
Verfasst: 14.02.2008 21:23
von STARGÅTE
darum gehts ja nicht es geht darum das nicht alle verfügbaren Stellen einer .D angezeigt werden, obwohl sie da sind. muss ja nicht PI sind, ist ja bei alles .D so
Verfasst: 14.02.2008 21:24
von Kaeru Gaman
lies mein posting nochmal....
wenn du eine endliche base2-zahl in eine base10-darstellung konvertierst,
wirst du in den meisten fällen eine unendliche anzahl nachkommastellen bekommen.
Verfasst: 14.02.2008 21:27
von STARGÅTE
ließ du noch mal ^^
debug IrgendeineD
gibt mir eine bestimmt zahl aus, und die hat mehr Stellen als StrD warum?
Mir ist ja klar das Fießkommazahlen sehr "flüchtig" sind, trotzden werden sie da als "echte" Zahl gespeichert, und auch ausgegeben, dann kann doch StrD diese auch so anzeigen wie sie ist.
Verfasst: 14.02.2008 21:32
von Kaeru Gaman
also gut....
mag ja sein, dass die umwandlung, die Debug vornimmt,
aus irgendeinem grund anders ist.
aber:
StrD() muss eine beschränkung haben.
ob nun Debug auf 20nks beschränkt, und StrD auf 10nks,
ist nur eine nötige ergänzung in der Help, beides ist kein Bug.
Verfasst: 14.02.2008 21:51
von STARGÅTE
jo beschränkung ja, und in BUG ist es ja auch nicht, aber ich woltle nur wissen wie man halt das "so kurz" gemacht hat
Verfasst: 14.02.2008 21:57
von NicTheQuick
Wie man im folgenden Code sieht, hat 'Debug d.d' auch eine Begrenzung.
Code: Alles auswählen
Define d.d = 1
For a = 1 To 30
d / 2
Next
Debug d
Debug StrD(d, 40)
Debugger hat geschrieben:0.0000000009313225746154785
0.0000000009313225746154785156250000000000
Verfasst: 15.02.2008 19:45
von PMV
STARGÅTE hat geschrieben:jo beschränkung ja, und in BUG ist es ja auch nicht, aber ich woltle nur wissen wie man halt das "so kurz" gemacht hat
Du meinst, warum?
Debug wird nur zur Fehlersuche verwendet, demnach ist es garnicht so
verkehrt, ein möglichst genaue Zahl zu erhalten ... StrD wird hingegen
normalerweise benutzt, damit man eine ziemlich genaue Zahl dem
Benutzter visualisieren kann, aber dieser wird im normalfall mit 20 - 40
Nachkommastellen etwas überfordert sein. Aber am ende ist die Frage je
unwichtig, weil StrD dafür den optionalen Parameter hat ... und somit
diese Standart-Frage jeglichen relevants entzieht.
Und für wirklich sehr kleine Zahlen empfiehlt sich eh eine andere
Darstellung ... wer kann schon so ohne weiters sagen, ob das nun 10
oder 20 Nullen nach dem Komma sind
MFG PMV