Avatar billede cyberkox Nybegynder
10. marts 2006 - 14:46 Der er 11 kommentarer og
1 løsning

Oprunde et tal

Hey
Jeg har et script der tæller hvor mange billeder der er i en mappe.
Det tal vil jeg gerne have divideret med 9, således at resultatet giver et helt tal og hvis det giver et uligetal, fx 2,1, skal dette rundes op til 3

Findes der en funktion der gør det?
Avatar billede medions Nybegynder
10. marts 2006 - 14:50 #1
Round() eller FormatNumber(intTal,2)

//>Rune
Avatar billede cyberkox Nybegynder
10. marts 2006 - 14:56 #2
Du har ikk helt forstået ;)

ALLE tal skal oprundes, så snart det hedder 2,0001 skal det oprundes til 3
Avatar billede Slettet bruger
10. marts 2006 - 14:59 #3
Hej cyberkox! Dette kan man ikke umiddelbart... I hvert fald ikke med round og formatnumber...
For det er jo egentlig ikke matematisk korrekt e.g. at oprunde tallet 2,1 til 3, men hvis det er det du gerne vil kan du eventuelt bruge nedenstående function:
<%
function afrund(streng)
afrund = streng
if (afrund <> "" AND NOT isnull(afrund)) then
strafrund = split(afrund,",")
for i=0 to ubound(strafrund)
talantal=talantal+1
next
if talantal > 1 then
tal = split(afrund,",")
afrund = tal(0)+1
else
afrund = afrund
end if
end if
end function
%>
<%=afrund("2,1")%>

- Denne skulle gerne virke... men jeg har ikke testet den...

\Dan
Avatar billede softspot Forsker
10. marts 2006 - 15:01 #4
De normale afrundingsrutiner fungerer ikke i dit tilfælde, fordi de runder op efter normale afrundingregler, dvs. 0.5+ rundes op, ellers rundes ned.

Du er derfor nød til at lave din egen logik til oprunding. Det kunne f.eks. være at du du lagde en til heltalsresultatet af divisionen. Det har bare den ulempe at hvis divisionen rent faktisk giver et heltal, så får du en for meget (f.eks. vil 18/9 jo give 2 og ikke 3 som mit forslag ville give). Så skal du til at implementere undtagelser i din afrunding, f.eks. hvis tal divideret med 9 = heltallet af tal divideret med 9 så skal der ikke lægges en til ellers skal der. Noget i stil med dette:

tal = 25
if cdbl(int(tal/9)) < cdbl(tal/9) then
  antal = int(tal/9) + 1
else
  antal = int(tal/9)
end if


Jeg er ikke helt sikker på at cdbl er nøvendig, men har taget den med alligevel.
Avatar billede cyberkox Nybegynder
10. marts 2006 - 15:05 #5
dannielsens eksempel virkede. Jeg troede måske der havde været en funktion, men selvfølgelig er det logisk nok at den ikke er der ;)

Tak for hjælpen. Smid et svar, Dan
Avatar billede Slettet bruger
10. marts 2006 - 15:09 #6
OK! Det gør jeg så...

- godt det virkede...!

\Dan
Avatar billede eagleeye Praktikant
10. marts 2006 - 16:53 #7
Eks:


t = 19
tal = t / 9
if tal > int(tal) then tal = tal +1
Avatar billede eagleeye Praktikant
10. marts 2006 - 17:00 #8
ok, der mangler lige et int omkring hvor der ligger en til: tal = int(tal) +1
Avatar billede softspot Forsker
10. marts 2006 - 17:06 #9
eagleeye >> dvs. den ligner meget den jeg forslog... ;-)
Avatar billede eagleeye Praktikant
10. marts 2006 - 17:10 #10
Ja det er jo faktisk det samme ;)
Avatar billede softspot Forsker
10. marts 2006 - 17:12 #11
Ja, men det skader jo ikke at understege en god og simpel løsning ;D
Avatar billede sth Novice
11. marts 2006 - 22:23 #12
jeg mente der var en funktion der kunne klare det , men jeg kan da godt nok ikke lige fiden den, men jeg er kommet frem til at int(tal+1) også vil runde dit tal op til næste hele tal
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