Avatar billede netro Nybegynder
22. juni 2005 - 04:39 Der er 11 kommentarer og
1 løsning

Tal vises anderledes

arr = new Array(111, 0111);

arr[0] // = 111
arr[1] // = 73

Hvad er grunden til, at jeg ikke får returneret 0111?
Avatar billede roenving Novice
22. juni 2005 - 06:12 #1
Fordi et tal med et foranstillet 0 fortolkes som et oktal-baseret tal (ligesom f.eks. hex er 16-baseret !-)

Hvis du f.eks. gør følgende, vil det første være titalsbaseret, det andet 8-talsbaseret og det tredje 16-talbaseret ...

<script type="text/javascript">

arr = new Array(111, 0111, 0x111);
alert(arr);
</script>

-- så det første vil betyde 1*100 + 1*10 + 1, det andet vil betyde 1*64 + 1*8 + 1, det tredje betyder 1*256 + 1*15 +1 !o]
Avatar billede roenving Novice
22. juni 2005 - 06:13 #2
... 1*256 + 1*16 +1 !o]
Avatar billede netro Nybegynder
22. juni 2005 - 14:04 #3
Det giver mening.

Sagen er den, at jeg skal løbe arrayet i gennem og tjekke, om fx. værdien 111 matcher hver af de to værdier. Og her opstår problemet, når 111 sammenlignes med 73...
Avatar billede netro Nybegynder
22. juni 2005 - 14:10 #4
Sagt på en anden måde - kan jeg få 0111 til at blive repræsenteret som 111 uden at fjerne nullet?
Avatar billede roenving Novice
22. juni 2005 - 14:44 #5
Nej, du er nok nødt til at lave titals-baserede mellemvariabler, da ikke engang parse-metoderne kan knække den !-)

Faktisk er det sådan, at du må skabe dit array som strings, da javascript simpelthen opfatter en tegnfølge, som starter med et 0 og kun har tal i sig ellers som et oktal-baseret tal, og slet ikke internt opbevarer 0111, men den binaære repræsentation af tallet 73 !o]

-- men afhængig af, hvordan dit behov er, må vi da kunne finde på et-eller-andet med enten streng-genkendelse eller replacing af 0'er ...
Avatar billede netro Nybegynder
22. juni 2005 - 19:44 #6
Jeg lagrer dem som string i stedet og bruger en lille funktion til at fjerne evt. nuller forrest. Så fungerer det. Tak for det :-)
Avatar billede netro Nybegynder
23. juni 2005 - 06:25 #7
Bliver et enkelt 0 egentlig også opfattet som en oktal værdi? Det er jo ligegyldigt, da 0 decimalt også er 0 oktalt, men jeg kom lige til at undre mig lidt.
Avatar billede roenving Novice
23. juni 2005 - 13:58 #8
Velbekomme '-)
Avatar billede roenving Novice
23. juni 2005 - 13:59 #9
-- og da et oktalt 0 er det samme som et decimalt, vil det internt blive lagret med den binære repræsentation for et nul, sandsynligvis en lang stribe binære 0'er !-)
Avatar billede netro Nybegynder
23. juni 2005 - 15:17 #10
Ok ;o)
Avatar billede roenving Novice
23. juni 2005 - 15:18 #11
-- og tak for point ;~}
Avatar billede netro Nybegynder
23. juni 2005 - 18:03 #12
Selv tak da :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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