webForumDet fria alternativet

avrunda till närmsta 100 tal

ASP

6 svar · 666 visningar · startad av daniel_ra

Medlem sedan jan. 2002381 inlägg
Frågan#1

Hur avrundar man till närmaste hundratal?

jag vill att 1315 skall bli 1300 och 1351 skall bli 1400

osv

Medlem sedan maj 200010 687 inlägg
#2

Ett sätt:

foo = 1351
foo = CLng(foo / 100) * 100
Medlem sedan maj 2001431 inlägg
#3

tal1 = 1315
tal2 = närmastehundratal (1315)

Function närmastehundratal (invärde)
närmastehundratal = 100 * ((invärde+50)\100)
End Function

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Det bästa vore väl Round-funktionen?
http://www.devguru.com/Technologies/vbscript/quickref/round.html

Function narmastehundratal(invarde)
	narmastehundratal=Round(invarde/100,0)*100
End Function

När jag läste Hermans svar tänkte jag att det kan ju inte bli rätt; alla tal ökas med 50, dessutom har han vänt på divisionstecknet.

Kontrollräknade:

narmastehundratal = 100 *((invärde+50)\100)
100*((1315+50)/100)
100*(1365/100)
100*13,65
1365!

Testade koden, fick 1300. :q

Men, vänta, jag ändrade ju inte divisionstecknet, och koden gick att köra. :q :q

Över till Devguru, finns det något jag inte känner till?
Jovisst, redan "\ (integer divide)" på indexsidan visade att så var fallet!
The \ operator divides two numbers and returns an integer.
http://www.devguru.com/Technologies/vbscript/quickref/backslash.html

Tur man testade koden innan man visade sin okunskap i ett "du har fel"-inlägg. :r

Medlem sedan juni 2004533 inlägg
#5

Använd Round, som J.N. visade. Det är mycket klarare vad koden gör då, än att använda olika typer av konverteringar, där det inte är så självklart ifall den avrundar eller klipper värdet.

Medlem sedan maj 2001431 inlägg
#6

Jag vill bara varna lite för round... man får inte alltid det man vill ha - tror sig få.

Notera följande exempel

1. Round(1350 / 100, 0) * 100 => 1400
2. Round(1450 / 100, 0) * 100 => 1400

Har man har ett mittvärde så avrunder Round till det tal som är jämnt :)

Medlem sedan maj 200010 687 inlägg
#7

Jupp, Round är lite dum. Hur ofta vill man ha ett tal avrundat på det sättet?

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)