webForumDet fria alternativet

avrunda rätt

ASP

13 svar · 400 visningar · startad av lillen_009

Medlem sedan nov. 2002137 inlägg
Frågan#1

Räknar lite på min sida och får inte avrundningen att stämma. Jag vill avrunda allt uppåt

2 ska bli 2
2,01 ska bli 3
2,99 ska bli 3
3 ska bli 3
3,01 ska bli 4
osv...

ett exempel på hur det kan se ut:
rs("number") = 45 i detta fall

cint(rs("number")/20 = 2,25 
' ska egentligen vara 3

'om rs("number") är 40 
cint(rs("number")/20 = 2
'Det blir korrekt

finns det någon funktion som avrundar som jag villl?

Medlem sedan jan. 20032 285 inlägg
#2

Du kan ju skapa en egen funktion. ;)

Function AvUpp(intTal)
  If NOT IsNumeric(intTal) Then Exit Function

  intTal = CDbl(intTal)

  If Int(intTal) < intTal Then
    intTal = Int(intTal + 1)
  End If

  AvUpp = intTal
End Function

Response.Write(AvUpp(2.45) & " " & AvUpp(2.98))
Medlem sedan dec. 20003 887 inlägg
#3

Det räcker väl med

Function AvUpp(nTal)
  AvUpp = 0

  If IsNumeric(nTal) Then AvUpp = Int(nTal) + 1
End Function

Tror jag... ;)

Medlem sedan jan. 20032 285 inlägg
#4

Tyst med dig! ;)

Medlem sedan juni 200032 967 inlägg
#5

Fast det kan nog bli lite galet ändå om man gör som Engine^ skriver. Om det som skickas in till funktionen redan är ett heltal blir resultatvärdet liksom ett för högt.

Så gör en liten kontroll först.

Mvh

Medlem sedan jan. 20032 285 inlägg
#6

Tack @nders! :p ;)

Medlem sedan nov. 2002137 inlägg
#7

Tack för svaren... men hur får man in det på sidan? Fär tillfället får jag bara Syntaxfel och det pekar på

function AvUpp(ntal)

do until rs.eof

Function AvUpp(nTal)
  AvUpp = 0

  If IsNumeric(nTal) Then AvUpp = Int(nTal) + 1
End Function

rakna = rs("threadnr") / 20

response.write "<a href=sida.asp?Page="& AvUpp(rakna) & "&PostId="&rs("postid") &">Länk</a>"

rs.movenext
loop

Ursäkta för att jag är så trög... :r

Medlem sedan jan. 20032 285 inlägg
#8

Som sagt, använd min version istället. :)

Function AvUpp(intTal)
  If NOT IsNumeric(intTal) Then Exit Function

  intTal = CDbl(intTal)

  If Int(intTal) < intTal Then
    intTal = Int(intTal + 1)
  End If

  AvUpp = intTal
End Function
Medlem sedan nov. 2002137 inlägg
#9

ja, ska använda den... är det bara att klistra in den där?

Medlem sedan jan. 20032 285 inlägg
#10

Japp. :)

Medlem sedan nov. 2002137 inlägg
#11

Gör jag helt fel?

Får syntaxfel och det pekar på raden

 function AvUpp(intTal)

felmeddelande: 0x800A03EA

Vad ska man göra? Har jag gjort helt fel?

Medlem sedan juli 20011 084 inlägg
#12

Ja det har du ;) lägg funktionen utanför loopen.

Medlem sedan dec. 20003 887 inlägg
#13

@nders skrev:

Fast det kan nog bli lite galet ändå om man gör som Engine^ skriver. Om det som skickas in till funktionen redan är ett heltal blir resultatvärdet liksom ett för högt.

Så gör en liten kontroll först.

Mvh

Hehe... så kan det gå när man har bråttom :)

Function Ceiling(nTal)
  Ceiling = 0

  If IsNumeric(nTal) Then
    If nTal - Int(nTal) = 0 Then
      Ceiling = nTal
    Else
      Ceiling = Int(nTal) + 1
    End If
  End If
End Function

Do Until rs.EOF
  rakna = rs("threadnr") / 20

  Response.Write "<a href=sida.asp?Page="& Ceiling(rakna) & " & PostId=" & rs("postid") &">Länk</a>"

  rs.MoveNext
Loop

Så, nu borde det inte vara några fel kvar...

*väntar på verifikation från sebbe eller @nders* :)

Medlem sedan jan. 20032 285 inlägg
#14

Jodå, nu var det bättre. ;)
Men nu var vi ju uppe i lika mycket kod igen, så vad spelar det för roll? ;)

280 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)