Hur avrundar man till närmaste hundratal?
jag vill att 1315 skall bli 1300 och 1351 skall bli 1400
osv
6 svar · 666 visningar · startad av daniel_ra
Hur avrundar man till närmaste hundratal?
jag vill att 1315 skall bli 1300 och 1351 skall bli 1400
osv
tal1 = 1315
tal2 = närmastehundratal (1315)
Function närmastehundratal (invärde)
närmastehundratal = 100 * ((invärde+50)\100)
End Function
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
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.
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 :)
Jupp, Round är lite dum. Hur ofta vill man ha ett tal avrundat på det sättet?