Roman Pfarrhofer: Runden auf zwei Nachkommastellen

Beitrag lesen

Hallo JankoW!

Eingabe = 3,5 ist nicht

Round(Eingabe) --> 3 ?

Jedoch sollte doch meines Wissens bei 5 aufderundet werden (4)??

Ich habe mal ein kurzes Script geschrieben, um auf das Problem draufzukommen:

<%
REM -- Auf zwei stellen Runden
Response.Write "Auf zwei stellen Runden:<br>"
a = 3.14
for i = 0.003 to 0.007 step 0.001
b = a + i
Response.Write "Wert: " & b & " --> " & Round(b, 2) & "<br>"
next
Response.Write "<br>"
REM -- Auf eine stelle Runden
Response.Write "Auf eine stelle Runden:<br>"
a = 3.1
for i = 0.03 to 0.07 step 0.01
b = a + i
Response.Write "Wert: " & b & " --> " & Round(b, 1) & "<br>"
next
%>

Das Ergebnis hat mich äußert erstaunt:

Auf zwei stellen Runden:
Wert: 3.143 --> 3.14
Wert: 3.144 --> 3.14
Wert: 3.145 --> 3.14
Wert: 3.146 --> 3.15
Wert: 3.147 --> 3.15

Auf eine stelle Runden:
Wert: 3.13 --> 3.1
Wert: 3.14 --> 3.1
Wert: 3.15 --> 3.2
Wert: 3.16 --> 3.2
Wert: 3.17 --> 3.2

Bei Runden auf eine Stelle macht er keinerlei Probleme auf auf zwei stellen rundet er schlichtweg falsch! Auf drei Stellen rundet er aber wieder richtig.

Habe einiges versucht und auch im MSDN nachgeschlagen aber keinen Hinweisdrauf gefunden, kann aber nicht sagen, daß es sich um einen Bug handelt.

Aber wenn irgendwer dieses Problem löst, bitte ich um eine Mail, würde mich sehr interessieren!

CU Roman