Avatar billede delphiuser Mester
25. januar 2008 - 18:43 Der er 8 kommentarer og
2 løsninger

rund kommatal op til nærmeste hele tal

Hej eksperter...

jeg er igang med at lave et program som udregner antal zoner for en gruppe og hvor mange klip de skal bruge på et kort.

men har et problem. for tit og ofte for man et kommatal og det skal automatisk rundes op til det nærmeste hele tal.

så hvis man eksempel vis skal have 50.5 zoner hvilket ikke er muligt. skal det rundes op til 51 zoner. hvordan gøres dette?

håber i kan hjælpe mig med noget kode...
Avatar billede snowball Novice
25. januar 2008 - 18:46 #1
Avatar billede arne_v Ekspert
25. januar 2008 - 18:48 #2
Jeg tror at det maa vaere Ceil og ikke Round der skal bruges her.
Avatar billede vallemanden Nybegynder
25. januar 2008 - 19:47 #3
lol det har jeg jo lige fortælt dig via MSN
26. januar 2008 - 14:02 #4
Round vil altid runde til det nærmeste heltal, op og ned.
Men da du altid ønsker at runde op, så lægger du først 0.5 til før du afrunder, så vil du altid runde op.
Men hvis du har et heltal i forvejen så runder det også op, så derfor er du nødt til at starte med en if statement, der undersøger om tallet allerede er et heltal.
Du kan også bruge Int functionen, som altid runder ned, så skal du blot lægget 1 til før du afrunder.

if X <> Int(X) then X := Int(X+1);
Avatar billede arne_v Ekspert
26. januar 2008 - 14:58 #5
Hvorfor bruge en if når Delphi allerede har en funktion der klarer det hele ??
26. januar 2008 - 16:13 #6
Hej Arne
Hvem har dog fundet på at denne funktion skulle hedde 'Ceil'?
I alle de år jeg har programmeret, har jeg aldrig hørt om den før.
Hvis man aldrig havde hørt om denne function, og så linien:
X := Ceil(X);
Så vil man da ikke ane hvad der sker.
Man kunne selvfølgelig altid sætte en kommentar på, men så er mit oprindelige forslag da ligeså læsevenlig, da Int er en langt mere kendt function.
Avatar billede arne_v Ekspert
26. januar 2008 - 16:41 #7
Ceil kommer fra ordet ceiling og fortæller enhver der kan engelsk hvad den gør.

Funktionen hedder ceil i C/C++, Math.ceil i Java og Math.Ceiling i .NET.

Men ja, hvis man tror på at dem der skal vedligeholde koden ikke kan engelsk og ikke
kender andre programmerings sprog, så kan det da godt være at ceil er et dårligt valg.
26. januar 2008 - 16:48 #8
Hej Arne
Tak for forklaringen, Ceiling = Loft, (den øverste) ikke.
Jeg indstiller min argumentation, din forklaring er helt i orden.
Avatar billede vallemanden Nybegynder
26. januar 2008 - 18:57 #9
problemmet med Ceil er at den

2.8 = 3
2.2 = 3
Avatar billede arne_v Ekspert
26. januar 2008 - 19:14 #10
Det er netop det man vil med oprunding.
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