Domino 9 und frühere Versionen > ND8: Entwicklung

Gleiche Werte, unterschiedliche Ergebnisse im Vergleich

(1/2) > >>

Johnson:
Hallo allerseits,

wir haben hier ein kleines Zahlenspiel, welches bei gleichen Werten zu unterschiedlichen Ergebnissen führt:


--- Code: ---Sub Initialize

Dim i As Double
Dim x As Double
Dim y As Double

i = 757.15
x = 755.00 + 1.08 + 1.07
y = 755.00 + 1.09 + 1.06

Print "x is equal: " & (i = x) ' returns FALSE
Print "y is equal: " & (i = y) ' returns TRUE

End Sub
--- Ende Code ---

Kann mir jemand dieses "Phänomen" erklären? Ich kann es nicht.

Tode:
Das ist ganz logisch und erklärbar.... Dezimalstellen lassen sich nun mal nicht exakt Binär darstellen, und jeder Computer rechnet Binär.
Damit hat man schon mit einer Dezimalstelle immer einen Rundungsfehler... und mit 2 wird es nur schlimmer...

Dazu gibt es mannigfaltige Artikel im Web etc.
Als Programmierer sollte Dir das "Risiko" aber geläufig sein...

klaussal:
Mit "Long" funktioniert es.

Glombi:
siehe dazu auch
http://www-01.ibm.com/support/docview.wss?uid=swg21096503

Johnson:

--- Zitat ---Als Programmierer sollte Dir das "Risiko" aber geläufig sein...
--- Ende Zitat ---
Von C bzw. C++ kannte ich das "Problem" noch. Das hatte ich schon fast geahnt. Konnte es mir in LS nur nicht so recht erklären.

@klauss: Ein Long enthält Ganzzahlen und keine Fließkommazahlen.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln