Avatar billede baitianlong Nybegynder
24. marts 2002 - 18:32 Der er 10 kommentarer og
1 løsning

Decimalafrunding !!

Hej.

-Det har sikkert været oppe før, men...

Hvordan afrunder man til 1-2-3-4 decimaler ??
Kan man bruge length, eller hvad gør man ??

Det skal bruges her:

speed=(getBytesLoaded()/1024)/(getTimer()/1000);

Der vil jeg gerne have afrundet til 1 eller 2 decimaler !!
Avatar billede lingoman Nybegynder
24. marts 2002 - 18:51 #1
du kan ikke bruge værdien af getTimer() direkte, men skal først finde startværdien:

timerBegin = getTimer();

senere kan man så bruge denne startværdi til at udregne hvor lang tid load processen har været i gang

tidsInterval = getTimer() - timerBegin;

//afrund til 3 decimaler
decimalFaktor = 1000;
kBPerSek = (1000/1024)*getBytesLoaded()/tidsInterval;
speed = Math.ceil(kBPerSek*decimalFaktor)/decimalFaktor;

Hvis du vil afrunde til 4 decimaler bruger du
decimalFaktor = 10000;

Hvis du vil afrunde til 3 decimaler bruger du
decimalFaktor = 1000;

Hvis du vil afrunde til 2 decimaler bruger du
decimalFaktor = 100;

Hvis du vil afrunde til 1 decimal bruger du
decimalFaktor = 10;

Læg mærke til at det er antallet af nuller som bestemmer hvor mange decimaler man får med i denne formel.

mvh geo
Avatar billede baitianlong Nybegynder
24. marts 2002 - 21:32 #2
Hey Geo. Det virker udmærket. Men kan du tilføje en linie, således at decimalerne er konstante (selv om de er nul !!) ?

Og et lille "dumt spørgsmål" . Er der ikke en kode a'la javaScripts "indexOf", der kan bruges ??
Avatar billede baitianlong Nybegynder
24. marts 2002 - 21:37 #3
---Det ser nemlig dumt ud at den hopper panisk frem og tilbage, når decimalen er nul !

måske noget i retning af if(speed=int()) {speed=speed+".0"}

<amatørløsning>, måske ?
Avatar billede lingoman Nybegynder
24. marts 2002 - 22:16 #4
Jeg kan ikke komme i tanke om en enkelt linje kode som kan udføre dette i Flash 5. Måske i Flash MX?

Det man kan gøre er at splitte tallet og tælle antal chars efter "." og derefter tilføje ekstra 0'er hvis der er mindre end de ønskede ciffre.
Avatar billede baitianlong Nybegynder
24. marts 2002 - 22:17 #5
Jeg mener naturligvis at antallet af decimaler skal være konstant, selv om de er nul !
Avatar billede lingoman Nybegynder
24. marts 2002 - 22:31 #6
Hvis du bruger getTimer() funktionen er det ekstremt usandsynligt at du ender med et andet end det ønskede decimaltal. afprøv det :)
Avatar billede baitianlong Nybegynder
24. marts 2002 - 23:33 #7
Jeg har afprøvet det !! Den rammer ofte nul (med en decimal) .Prøv selv på www.legende.dk/liner

Hvis man nu spørger om length(speed) fra starten, er den jo 1, 2 eller 3 cifre (modem, adsl, t3) !! Så kunne man måske arbejde derfra ??
Avatar billede lingoman Nybegynder
25. marts 2002 - 07:16 #8
som sagt skal tallet skilles ad først og kun antallet af ciffre efter punktum "." tælles. derefter må du tilføje de manglene nuller

sæt

s = Math.ceil(kBPerSek*decimalFaktor)/decimalFaktor;
sString = String(s);
sPartArray = sString.split(".");

numberOfdecimals = 4; // tilføj nuller optil 4 ciffre

if (sPartArray.length == 1) {
    //ingen decimaler fundet
    zeroesToAdd = numberOfDecimals ;
    decimalString = ".";
} else {
    // add trailing zeroes
    ciffreFundet = sPartArray[1].length ; //
    zeroesToAdd = numberOfDecimals - ciffreFundet;
    decimalString = "." + sPartArray[1];
}

for ( i =  zeroesToAdd ; i > 0 ; i-- ) {
    decimalString = decimalString + "0";
  }

//gendan decimaltallet som en streng
speed = sPartArray[0] + decimalString;

mvh geo
Avatar billede baitianlong Nybegynder
25. marts 2002 - 12:36 #9
Virkelig stilet, geo... -Det virker perfekt

MANGE TAK
Avatar billede lingoman Nybegynder
25. marts 2002 - 13:19 #10
det var lidt utroligt :) Jeg havde nemlig kun skrevet mit bud uden at teste det i Flash!
Tak for point :)
Avatar billede baitianlong Nybegynder
25. marts 2002 - 13:24 #11
Den er perfekt, blot man husker at sætte decimalFaktor svarende til din numberOfdecimals (100 = 2)

Godt klaret , "lingo"
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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