Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Bille am 17.11.08 - 15:01:19

Titel: Kurioses Verhalten bei Hide-When-Formel
Beitrag von: Bille am 17.11.08 - 15:01:19
Hallo,

ich setze in einer Maske eine Hide-When-Formel ein, die eine Zeile verbergen soll, wenn die Differenz aus zwei Zahlen kleiner als 0,5 ist.

Code
(SK_Produkt = "FG" & SK_Abweichung <1/2) 

Der Wert für das Feld "SK_Abweichung" ergibt sich aus
Code
SK_KonditionK - SK_KonditionN

Bei der Eingabe von 4,1 und 3,6 wird die Zeile allerdings verborgen, obwohl die Differenz 0,5 ergibt und somit nicht kleiner 0,5 ist.

Das Seltsame daran ist, dass bei all den anderen Kombinationen (z.B. 4,0 - 3,5 oder 4,11 - 3,61 oder 3,5 - 3,0) die auch 0,5 ergeben, die Zeile nicht verborgen wird.

Kann mir jemand sagen, was da dahinter steckt?

Bille

Titel: Re: Kurioses Verhalten bei Hide-When-Formel
Beitrag von: it898ur am 17.11.08 - 15:33:40
Hallo,

hier zeigt sich, dass Notes kein Rechenprogramm ist und endliche Nachkommastellen hat. Auch wenn die Differenz genau 0,5 ist, ergibt sich für Notes intern zum Teil 0,4999999999. Hier hilft nur eine Rundung über @Round vor dem Vergleich in der Hide When Formel.

Gruß

André
Titel: Re: Kurioses Verhalten bei Hide-When-Formel
Beitrag von: Bille am 17.11.08 - 15:47:58
Mmh, warum Notes da auf Rundungsdifferenzen kommt, kann ich nicht nachvollziehen.

Außerdem verstehe ich nach wie vor nicht, warum es dann bei den Konstellationen 3,5 - 3,0 oder 4,2 - 3,7 auch 0,5 ergibt. Müsste dann nicht immer eine Rundungsdifferenzen rauskommen?
Titel: Re: Kurioses Verhalten bei Hide-When-Formel
Beitrag von: Bille am 17.11.08 - 15:55:04
Ok, wenn man die Zahl vorher rundet, hat Notes auch kein Problem mehr.
Vielen Dank André für den Tipp!

Bille
 :D
Titel: Re: Kurioses Verhalten bei Hide-When-Formel
Beitrag von: it898ur am 17.11.08 - 15:59:26
Gern geschehen !

Das warum kann ich auch nicht beantworten, aber ich bin auch schon über diesen "Stein" gestolpert.

André
Titel: Re: Kurioses Verhalten bei Hide-When-Formel
Beitrag von: Werner Götz am 17.11.08 - 17:54:24
Das Problem liegt wohl daran, dass manche Zahlen, die uns im Dezimalsystem als "einfach" erscheinen als Binärzahlen periodische Brüche sind.
z.B. Dezimal 0,1 ist binär 0,00011001100110011...

Solche Zahlen können somit nur "ungenau" gespeichert werden und es kann immer wieder zu Problemen wie dem geschilderten kommen.

Dass es aber nicht immer zu diesem Problem kommt, liegt daran, dass es natürlich auch endliche binäre Nachkommazahlen gibt
z.B. Dezimal 0,5 ist binär 0,1
Und mit solchen kann man natürlich auch anständig rechnen.

-Werner