Avatar billede laksen Nybegynder
24. juni 2004 - 12:16 Der er 4 kommentarer og
1 løsning

Forkert afrunding ved Round()

Jeg har problemer med at få Round() til at fungere ordentligt.

Funktionen runder ikke konsekvent op/ned. 0,5 bliver afrundet til 0, mens 1,5 bliver afrundet til 2. Godt nok er det længe siden, jeg har haft matematik i skolen, men det beskrevne ville ikke få gode karakterer i en prøve :D

Korrekt ville derimod være 0,5 -> 1, 1,5 -> 2 osv.

Jeg har lavet en lille side, der beskriver mit problem: www.holsthansen.dk/test.asp

Kan nogen afhjælpe mystikken??
Avatar billede mikkel_strack Nybegynder
24. juni 2004 - 15:31 #1
Hvorfor det er sådan ved jeg ikke...men man kan jo bare selv klare det uden Round()

Kan sikkert gøres mere elegant, men det her virker da..

*******************

<html>
<head>

</head>
<body>
<table>
<tr>
<td>
<table border="1">
<%

for t=0 to 8
  for i=1 to 20
    response.write "<tr><td>" & (t+(i/20)) & "</td></tr>"
  Next
Next

%>
</table>
</td>
<td>

<table border="1">
<%


for t=0 to 8
  for i=1 to 20
      if (i Mod 20) >= 10 then
      z = 1
      else z = 0
      end if
      response.write "<tr><td>" & int(t+(i/20))+z & "</td></tr>"
  Next
Next



%>
</table>
</td>
</tr>
</table>
</body>
</html>

****************

Mikkel
Avatar billede mikkel_strack Nybegynder
24. juni 2004 - 16:17 #2
Eller sådan her:

<%
'Sæt x = det tal du vil afrunde
x = 2.5

if (Round(x-int(x)+1)-1) = 0 then
i = int(x)
else
i = int(x)+1
end if

response.write "Oprindeligt tal: " & x & "<br>"
response.write "Afrundet tal " & i
%>

Mikkel
Avatar billede laksen Nybegynder
24. juni 2004 - 16:44 #3
Den anden løsning var perfekt: simpel og lige til -- og så virkede den.

Tak for hjælpen! Nu kan jeg endelige afrunde korrekt.
Du lægger bare et svar...
Avatar billede mikkel_strack Nybegynder
24. juni 2004 - 17:04 #4
Velbekommen...

Har også lavet den som en funktion - men er ellers som ovenfor.

*******************

<html>
<head>

</head>
<body>

<table>
<%

Function Afrund(x)
  if (Round(x-int(x)+1)-1) = 0 then
    x = int(x)
  else
    x = int(x)+1
  end if
Afrund = x
End Function

For i=1 to 200
  Response.Write "<tr><td>Tal før afrunding: " & i/20 & "</td><td>Tal efter afrunding: " & Afrund(i/20) & "</td></tr>"
Next
%>
</table>
</body>
</html>

******************

Mikkel
Avatar billede laksen Nybegynder
24. juni 2004 - 17:07 #5
Det havde jeg rent faktisk også selv gjort :D

Men tak alligevel!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester