Avatar billede Shasim Novice
01. september 2005 - 20:41 Der er 8 kommentarer og
1 løsning

Mere "decimaler i sammentælling"

Jeg har fået fin hjælp af thulstrup til at få hægtet et nul på f.eks. en værdi som 0,1, så der istedet står 0,10.
Mit problem er nu at når min værdi ender på et heltal som 1, så skal der stå 1,00. Hvordan gør man det?

function format(num:Number):String {
    var str:String = num.toString();
    if (str.indexOf(".") != -1) {
        str = str.split(".")[1];
        if (str.length == 1) {
            str += "0";
        }
        str = "0."+str;
    }
    return str;
}
Avatar billede nielle Nybegynder
01. september 2005 - 20:44 #1
Måske sådan?

function format(num:Number):String
{
    var str:String = num.toString();
    if (str.indexOf(".") != -1)
    {
        str = str.split(".")[1];
        if (str.length == 1)
        {
            str += "0";
        }
        str = "0."+str;
    }
    else
    {
        str += ".00";
    }
    return str;
}
Avatar billede nielle Nybegynder
01. september 2005 - 20:53 #2
Må jeg forresten spørge om 1 er den højeste mulige værdi?
Avatar billede Shasim Novice
01. september 2005 - 21:01 #3
Jo, det virker, men nu opdager jeg at der er fejl i funktionen. Jeg har en stepper som ganger værdierne i en combobox og udskriver resultatet som decimaltal i et textfelt. Det går godt indtil jeg når over 1. Altså f.eks 11 x 0.10. Her bliver resultatet 0.10 osv. indtil jeg når op til 2, som bliver rigtigt skrevet som 2.00 ...
Avatar billede nielle Nybegynder
01. september 2005 - 22:00 #4
Denne burde kunne klare værdier over 1:

function format(num:Number):String
{
    var str:String = num.toString();
    if (str.indexOf(".") != -1)
    {
        if (str.split(".")[1].length == 1)
        {
            str += "0";
        }
    }
    else
    {
        str += ".00";
    }
    return str;
}
Avatar billede alexander_j Nybegynder
01. september 2005 - 22:23 #5
Jeg har også et lille forslag til hvordan man kan lave tal med præcis to decimaler:

function todecimaler(x){
    x = Math.round(x*100)/100; //afrunder tallet hvis det er mere end to-cifret
    temp1 = Math.floor( (x - Math.floor(x)) * 10 ); //finder første decimal efter kommaet
    temp2 = Math.floor( (x*10 - Math.floor(x*10)) * 10 ); //finder anden decimal efter kommaet
   
    if(temp1==0 and temp2==0) x = x+".00"; //tilføjer 2 nuller hvis der ingen decimaler er
    else if(temp2==0) x = x+"0"; //tilføjer 1 nul hvis der ingen decimal er på 2. decimal
   
    return x
}

trace( todecimaler(134) );
trace( todecimaler(134.3) );
trace( todecimaler(134.35) );
trace( todecimaler(134.356) );
Avatar billede Shasim Novice
02. september 2005 - 08:48 #6
>> nielle, det virker fint. Tak for hjælpen.

>>alexander_j, jeg har ikke prøvet dit forslag af, men du skal også have tak for dit bud.

Forslag til point-fordeling og svar modtages gerne:)
Avatar billede nielle Nybegynder
02. september 2005 - 09:46 #7
Du bestemmer helt selv hvordan du vil fordele point. Jeg har intet imod at dele. :^)

... og et svar :^)
Avatar billede alexander_j Nybegynder
02. september 2005 - 22:25 #8
Giv dem til nielle - jeg har så mange i forvejen!
Avatar billede Shasim Novice
05. september 2005 - 08:36 #9
Tak igen :)
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