Hallo Alois,

danke für den Hinweis.  Ja, irgendetwas wie diesen Umweg habe ich mir auch schon ausgedacht. Aber das ist unbefriedigend. Vor allem,  da es anscheinend keine eingebaute Funktion zum Runden gibt.

Ärgerlich ist es, dass die Zahlen im Betrachter als gleich angezeigt werden, es aber dann doch nicht sind.

Und wenn ich 123,45 eingebe als Zahlenwert, dann sollte das auch so sein. Irgendwie müsste man doch die Ungenauigkeiten auf der 12. Stelle beseitigen können. Denn es scheint das in der Formeln in der Tabelle möglich zu sein. Da tauchen die Vergleichsfehler nicht auf. Nur beim Makro. Oder mein REchner rechnet falsch 😮

Horst


Am 14.02.2022 um 22:55 schrieb Alois Klotz:
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


technik_...@jrsch.de 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: users-de-unsubscr...@openoffice.apache.org
For additional commands, e-mail: users-de-h...@openoffice.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscr...@openoffice.apache.org
For additional commands, e-mail: users-de-h...@openoffice.apache.org

Antwort per Email an