webForumDet fria alternativet

Avrunda uppåt till närmaste tiotal

ASP

6 svar · 1 169 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Frågan#1

Hej,
hur avrundar jag uppåt till närmaste tiotal med ASP/VbScript?
Om jag har talet 55 eller 32 så vill jag få ut 60 respektive 40.
Tacksam för svar!

Medlem sedan jan. 2007177 inlägg
#2

Om vi bortser från negativa tal som kan hanteras lite olika i olika språk [1] så kan man skriva pseudokoden (eftersom jag inte använder ASP/VbScript)

if (tal MOD 10) == 0 then
	avrundat = tal
else
	 avrundat = tal - (tal MOD 10) + 10

[1] http://en.wikipedia.org/wiki/Modulo_operation

Medlem sedan juni 20008 205 inlägg
#3
function RoundUp(n, x)
    Dim ret
    if n mod x <> 0
        ret = n + (x - (n mod x))
    else
        ret = n
    endif
    RoundUp = ret
end function

med reservation för syntaxfel

Medlem sedan mars 20041 505 inlägg
#4

Tack för era svar. :)
spango, din funktion fungerade fint efter lite fix.

Nu inser jag att jag egentligen ville veta hur långt det var kvar till nästa tiotal...
Detta löste jag såhär, vilket kanske inte är så elegant eftersom strängar blandas med tal.

Tal1 = 32
Tal2 = 10 - CByte(Right(CStr(Tal1),1))
Medlem sedan juni 200032 967 inlägg
#5

spango:
ser väl ganska bra ut, men det skall vara ett mellanslag mellan end och if.

mvh

Medlem sedan juni 20008 205 inlägg
#6

Troxy skrev:

Nu inser jag att jag egentligen ville veta hur långt det var kvar till nästa tiotal...
Detta löste jag såhär, vilket kanske inte är så elegant eftersom strängar blandas med tal.

Du kan göra så här om du vill få koden lite mer generaliserbar:

function DistanceTo(num, target)
    DistanceTo = (target - (num mod target)) mod target
end function
DistanceTo(4, 10) ' ger 6
DistanceTo(7, 10) ' ger 3
DistanceTo(20, 10) ' ger 0
DistanceTo(10, 10) ' ger 0
Medlem sedan mars 20041 505 inlägg
#7

spango, ååh tack för det där! :e

Jag håller på och bygger en databas-class för att generera och validera OCR-nummer för bankgiro.

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)