29. august 2003 - 12:26Der er
8 kommentarer og 1 løsning
Fjern decimaler
Igen er vi for så vidt ude i det temmeligt enkle.
Hvordan kan man med JavaScript fjerne decimal delen af et tal? Jeg ville da formode at der skulle være en funktion i JavaScript, således at jeg ikke selv skal programmere en.
Math.Floor kender jeg godt, men problemet med den er at med negative tal som f.eks. -2.95 afrunder den til -3...hvor jeg vil have -2 i stedet for.
Noget tid efter at have stillet spørgsmål gik jeg hjem, med en beslutning om at prøve at finde ud af om jeg dog ikke kunne finde en måde at beregne Int og Mod på et tal, rent matematisk med JavaScript, uden alle disse if sætninger og jeg ved snart ikke hvad.
Det tog mig en time, og så havde jeg regnet den ud, så at sige...and for your viewing pleasure, here's how ;-)
Lad os sige, at man har et tal, x, som man gerne vil have heltalsdelen (Int) af. Så har jeg regnet mig frem til at følgende sætning skulle kunne gøre det (og da jeg skal bruge denne beregning senere, angiver jeg den til at være y :-)
y=Math.floor(Math.abs(x))*(x/Math.abs(x))
Og for at bevise, at jeg ikke har ramt helt ved siden af, prøver jeg lige med 2 værdier (x=2,5 og x=-4,25)
Mht at finde en rest af en division (Mod funktionen), skal man jo bruge 2 tal, som jeg så har valgt at kalde a og b. Og funktionen er så således (hvor beregningen så indsættes i variablen z).
Hvis du vil undgå en fejl bliver du nødt til at forudsætte at x ikke er 0. Så din metode til at fjerne decimaler lyder nu: if (x!=0)then { x=Math.floor(Math.abs(x))*(x/Math.abs(x)) }else{ x=0 } Det er iøvrigt en langt mere tidkrævende metode, end f.eks. grunkens: x=(x<0)?Math.ceil(x):Math.floor(x)
Hmm...ja ja, helt perfekt er jeg altså ikke...pokkers også ;-)
Jeg kan godt se, hvad du mener...man kan jo (desværre) ikke dividere med 0 :-(
Tidskrævende? Tja, jeg formoder, du taler om hvor lang tid, procesorren bruger på at gennemkøre det, men jeg tror da ikke der vil være en synlig tidsforskel :-)
Og som sagt...jeg foretrækker at gøre tingene rent matematisk, hvis overhovedet muligt ;-)
Synes godt om
Ny brugerNybegynder
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.