LabVIEWForum.de - Frage zu "Quotient und Rest"

LabVIEWForum.de

Normale Version: Frage zu "Quotient und Rest"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
[attachment=17109]Hallo zusammen,

ich habe folgende Merkwürdigkeit entdeckt:
bei 1/0,1 rechnet LV 9 Rest 0,1 und nicht 10 Rest 0
was meiner Meinung nach Rauskommen müsste.
Ist das ein Bug oder stehe ich auf dem Schlauch?
Gruss
Norbert
Nein, würde ich nicht als Bug bezeichnen, sondern das ist ein typisches Resultat, das sich aus der Darstellung von Fließkommazahlen im Binärformat ergibt.

Problem ist: 0,1 kann nicht exakt als Fließkommazahl dargestellt werden, erhöhe mal die Anzahl der sichtbaren Nachkommastellen auf z.B. 20 Digits of Precision, dann siehst du, was ich meine.

"Quotient and Reminder" ist aus meiner Sicht prädestiniert für die Behandlung von Integer-Zahlen, und nicht von Fließkommazahlen.

Gruß, Jens
' schrieb:ich habe folgende Merkwürdigkeit entdeckt:
Es lohnt sich auch immer wieder, die Hilfe zu lesen:
[attachment=17111]
So weit so gut, aber wie wandel ich eine Fließkommazahl mit einer bestimmten Anzahl Nachkommastellen in einen Integer um, ohne das die Genauigkeit leidet?
' schrieb:So weit so gut, aber wie wandel ich eine Fließkommazahl mit einer bestimmten Anzahl Nachkommastellen in einen Integer um, ohne das die Genauigkeit leidet?
z.B. für eine Nachkommastelle:
[attachment=17119]
Das ist mir klar,
die Anzahl der Nachkommastellen hängt aber von dem Benutzer ab und kann daher nicht fix vorgegeben werden.
' schrieb:Das ist mir klar,
die Anzahl der Nachkommastellen hängt aber von dem Benutzer ab und kann daher nicht fix vorgegeben werden.
Einfach die 10 in meinem Bild durch z.B 1000000 ersetzen. Dann funktioniert es bis zu 6 Nachkommastellen, und bei weniger Nachkommastellen (also wie im obigen Beispiel) ist das kein Nachteil. Damit es nicht zum Überlauf kommt, muß evtl. das Format I64 statt I32 benutzt werden.

Allgemein gesagt:
Ausgehend von dem zu erwertenden Wertebereich für x, y und x/y, kann man den Faktor 10^N so groß wie möglich machen. Nur eben nicht so groß, daß es bei der Konversion zu I32 bzw. U64 zum Überlauf kommen kann.
Referenz-URLs