Avatar billede casper_skovgaard Nybegynder
25. september 2009 - 16:34 Der er 4 kommentarer og
1 løsning

lægge tal samme giver et mærkeligt resultat

Jeg har et Array med følgende tal:

-2.4,-2.4,-2.4,-2.4,-2.4,9.4,9.4,9.4,9.4,11,11,11,11.7,11.7,11.7,11.7,11.7,11.7,12.6,12.6,12.6,23.3,23.3,23.3,23.3,23.3,23.3,23.3,23.3

Tallene kommer fra en tekst streng og er konverteret med parseFloat.

Jeg lægger tallene sammen med følgende kode:

    var total = 0;

    for(var i = 0; i < arr.length; i++){
        total += arr[i];
    }

Resultatet bliver 353.00000000000006

Det er næsten rigtig, bortset fra alt til højre for kommaet.

Nogle ideer til hvad der er gået galt???
Avatar billede olebole Juniormester
25. september 2009 - 22:49 #1
<ole>

Det sker p.gr.a. JavaScripts nøjagtighed - eller mangel på samme - hvad angår tal. Du runder bare af til ønskede antal decimaler. Da du bruger én decimal overalt, bør du runde af til en decimal  =)

/mvh
</bole>
Avatar billede casper_skovgaard Nybegynder
26. september 2009 - 10:29 #2
ok tak, smider du et svar
Avatar billede olebole Juniormester
26. september 2009 - 13:59 #3
Selvtak  =)

Du kan evt. bruge toFixed metoden på Number objektet:

var nNum = 123.456;
alert(nNum.toFixed(2));
Avatar billede olebole Juniormester
26. september 2009 - 14:00 #4
- og da alle dine tal kun har én decimal, bør det nok være:

alert(nNum.toFixed(1));
Avatar billede olebole Juniormester
26. september 2009 - 14:58 #5
Tak for points  =)
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

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