+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LL13: Round()


(Guest) #1

Hallo!

  1. Round((NETTOPREIS-(NETTOPREIS*(100-RABATT)/100)),2)

  2. Round(3.195)

Im Fall 1 ist NETTOPREIS = 12.78 und RABATT = 25. Die Formel ergibt
3.195. Die Round-Funktion macht daraus 3.19.

Im Fall 2 ergibt sich ein Wert von 3.2, was richtig ist.

Was habe ich falsch gemacht?
Vielen Dank im Voraus!

Michael Keuer


(Guest) #2

Hallo Michael,

Hallo!

  1. Round((NETTOPREIS-(NETTOPREIS*(100-RABATT)/100)),2)

  2. Round(3.195)

Im Fall 1 ist NETTOPREIS = 12.78 und RABATT = 25. Die Formel ergibt
3.195. Die Round-Funktion macht daraus 3.19.

Im Fall 2 ergibt sich ein Wert von 3.2, was richtig ist.

Was habe ich falsch gemacht?

gar nichts. Hier muss wohl combit Stellung beziehen. Die Online-Hilfe zum Thema runden ist recht sparsam.

Vielleicht hilft ja folgendes:

Round(Val(FStr$(NETTOPREIS-(NETTOPREIS*(100-RABATT)/100), “?&.###”), 2)

Steffen


(Guest) #3

Hmmm…

Round(12.78*(100-75)/100,2) -> “3,20”
Round(12.78-12.78*(100-25)/100,2) -> “3.19”
Round(12.78-9.585,2) -> “3.19”

Was lernen wir hieraus? Daß die Binärdarstellung von Fließkommazahlen
nicht immer exakt ist (9.585 ist nicht exakt abbildbar -
cstr$(12.78-9.585,"%.15f") -> “3.194999999999999”). Dann ist der zu
rundende Wert nicht 3.195, sondern 3.194999999999 und somit gerundet
3.19.

Das ist kein “neues” Problem, sondern grundsätzlich ein Problem von
binärer Fließkommaarithmetik.

Paulchen

“Michael Keuer” <keuer@tvn-el…> wrote in message
news:30664102200814441@combit.net

Hallo!

  1. Round((NETTOPREIS-(NETTOPREIS*(100-RABATT)/100)),2)

  2. Round(3.195)

Im Fall 1 ist NETTOPREIS = 12.78 und RABATT = 25. Die Formel ergibt
3.195. Die Round-Funktion macht daraus 3.19.

Im Fall 2 ergibt sich ein Wert von 3.2, was richtig ist.

Was habe ich falsch gemacht?
Vielen Dank im Voraus!

Michael Keuer