Hallo,
ich bin jetzt nicht der Programmierspezialist ....
Es gibt meiner Erfahrung nach zwei Möglichkeiten:
- man vergleicht nur gerundete Werte auf Gleichheit - wichtig: nur für
den Vergleich runden!
- man berechnet die absolute Differenz zwischen den Zahlen und wenn die
kleiner als x ist, geht man von Gleichheit aus.
MfG Alois
[email protected] schrieb am 14.02.2022 um 22:42:
Hallo,
ich verzweifle an den Rechenfehlern.
ich will aus einer Tabelle Werte auslesen und vergleichen. Doch obwohl
die Werte gleich sind gibt der Vergleich immer einen Fehler. ( auf der
x. Stelle nach dem Komma) Das ist ein Problem der Fließkommazahlen,
ich weiß. Aber das dürfte trotzdem nicht sein.
Ich habe verschiedenes versucht, die Zahlen umzuwandeln z.B.
REM 1. Versuch
SNeu= -256.34
dd=(sNeu*100) '25634
d=fix(sNeu*100) '25633
Vbetrag= -124.98
Salt=-131.36
diff0=sneu-salt '-124,98
diff= fix(sNeu*100) - fix(sAlt*100) '-12497
vb=fix(vbetrag*100) '12498
vergleich=(vb<>diff) 'true
REM und noch mal mit den gleichen Zahlen in anderer Reihenfolge
SNeu= -256.34
Vbetrag= -124.98
Salt=-131.36
dd=(sNeu*100) '25634
d=fix(sNeu*100) '25633
'ddd=int(sNeu*100) '25634
diff0=sneu-salt '-124,98
diff= int(sNeu*100) - fix(sAlt*100) '-12498
vb=fix(vbetrag*100) '12498
vergleich=(vb<>diff) 'false
REM und andere Zahlen
Vbetrag= 265.34
Sneu=0
Salt=-256.34
dd=(sNeu*100) '25634
d=fix(sNeu*100) '25633
ddd=int(sNeu*100) '25634
diff0=sneu-salt '-124,98
diff= int(sNeu*100) - fix(sAlt*100) '-12497
vb=fix(vbetrag*100) '12498
vergleich=(vb<>diff) 'true
''''''''''''''
Mit INT und anderen Zahlen gibt es ähnliche Probleme.
Ich verzweifele!
Was kann ich machen?
Horst
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]