Avatar billede grafik-anders Seniormester
19. juli 2005 - 21:37 Der er 28 kommentarer og
1 løsning

Hvordan bliver "000010000" til "10000"?

jeg har en variabel med værdien "0001000" og jeg vil gerne have den til at have værdien 1000. Hvordan gør jeg det?


tal=tal.valueOf()

Eller:

tal=Number(tal)


Jeg kan ikke få det til at virke, - hjælp!!
Avatar billede webt Nybegynder
19. juli 2005 - 21:56 #1
Hmm ja hvis "00001000" er gemt som et tal ved jeg det faktisk ikke, men hvis det er en streng og du ved den altid vil indeholde 4x0 i begyndelsen kunne du gøre noget lign:

var tal_str:String="00001000";
var tal:Number=Number(tal_str.substr(4,length(tal_str)));
//tag fra position 4 til det sidste bogstave i tal_str og omdan resultatet til et nummer
trace(tal);

Men hvis det derimod er af datatypen tal ved jeg ikke lige hvad der er at gøre, da 00001000 bliver til 512 selv når den laves om til en string jeg må ærlgit indrømme jeg ved ikke hvorfor den gør det

Mvh
Martin
Avatar billede grafik-anders Seniormester
19. juli 2005 - 22:22 #2
nej, - så let er det desværre ikke. Det er hele tiden forskelliget hvor mange nuller som er foran.
Avatar billede webt Nybegynder
19. juli 2005 - 22:25 #3
Er datatypen string eller number?
Avatar billede grafik-anders Seniormester
19. juli 2005 - 22:28 #4
??? kan det ikke kun være en string, hvis der er nuller foran? - jeg er ikke så erfaren.
Avatar billede webt Nybegynder
19. juli 2005 - 22:30 #5
Jo det var også det jeg tænkte fordi ellers vil den blive en eller anden helt anden værdi,, så derfor kommer her en mulig løsning lige testet:

var tal_str:String="001000";
for (var i:Number=0;i<length(tal_str);i++) { //løb gennem bogstaverne i strengen
    if (tal_str.charAt(i)!=0) { //hvis den vi er nået til at forskellig fra 0
        var chop:Number=i; //gem position i chop
        break; //afslut løkke
    }
}
trace(Number(tal_str.substr(chop,length(tal_str)))); //udskriv den som nummer start ved chop og gå til enden af strengen

Den skulle virke

Mvh
Martin
Avatar billede grafik-anders Seniormester
19. juli 2005 - 22:36 #6
tak Martin

Jeg må gøre det på den besværlige måde, men bare det virker :-)

Faktisk lidt underligt at flash ikke har en genvej til det.

Vil du sende mig et svar?
Avatar billede webt Nybegynder
19. juli 2005 - 22:40 #7
Det gør jeg

Hvad der er endnu mere underlgit at hvad flash retunerer hvis man prøver at lave 0001000  eller bare 01000 som et nummer, hvor får den lige 512 fra? nå det er måske bare mig der synes det er meget underligt, selvfølgelig ved jeg godt at man ikke kan ha et nummer der hedder 01000 men hvad med 05,00 hvis man nu snakkede kr og gerne vil regne på det,, men oh well, nu har vi da en funktion til at fikse det

Ha en fortsat god aften
Martin
Avatar billede erikjacobsen Ekspert
19. juli 2005 - 23:04 #8
Tal, der i JavaScript (sådan ca. det samme der bruges i Flash) begynder med 0 opfattes i oktal notation. Og 1000(oktalt) = 512(decimalt).
Avatar billede erikjacobsen Ekspert
19. juli 2005 - 23:06 #9
Og så vil den her måske også virke:

  tal='00001000';
  tal=tal.replace(/^0+/,'');
Avatar billede grafik-anders Seniormester
19. juli 2005 - 23:08 #10
trace (Number("01")) // resultat: 1
    trace (Number("08")) // resultat: 8
    trace (Number("080")) // resultat: 80

fint nok, - det forstår jeg godt. Se så her:

    trace (Number("010")) // resultat: 8
Avatar billede erikjacobsen Ekspert
19. juli 2005 - 23:09 #11
10(oktalt)=8(decimalt)
Avatar billede larsholmgaard_dk Nybegynder
19. juli 2005 - 23:12 #12
Interessant - det har jeg faktisk aldrig set før, men det er sgu da godt at vide:
www.erikbianchi.com/archives/2005/05/flash_quirks_be.html
Avatar billede webt Nybegynder
19. juli 2005 - 23:13 #13
Ah det giver jo mening erikjacobsen

Der kan man bare se
Avatar billede thulstrup Nybegynder
19. juli 2005 - 23:15 #14
Du kan benytte parseFloat til at få strengen konverteret til et decimaltal:
var tal:String = "0001000";
trace(parseFloat(tal)); //udskriver 1000
Avatar billede larsholmgaard_dk Nybegynder
19. juli 2005 - 23:15 #15
Mystisk at det ikke er nævnt i Macromedia's dokumentation? Altså, i hjælpen?
Avatar billede erikjacobsen Ekspert
19. juli 2005 - 23:18 #16
Skal det laves til et tal, og samtidig fjerne 0-erne er det nok

  tal=parseInt('0001000',10);

der er den regelrette metode. Mit regulære udtryk fra før er blot en generel måde at fjerne foranstillede tegn.
Avatar billede webt Nybegynder
19. juli 2005 - 23:18 #17
Ja, parsefloat virker egenlig fint, synes ellers jeg havde testet det, men så er der da ingen grund til de store voodoo metoder
så længe tallet er en streng selvfølgelig
Avatar billede webt Nybegynder
19. juli 2005 - 23:20 #18
grafik-anders, du ser bare bort fra mit svar og ber en af de andre om et svar i stedet, selvom min voodoo løsning virker vil jeg ikke ha point for sådan noget, det skal sku laves ordenligt

Mvh
Martin
Avatar billede grafik-anders Seniormester
19. juli 2005 - 23:23 #19
Jeg bruger den, som thulstrup kommer med, så point til ham og fuld karma til jer andre!

Vil thulstrup sende et svar?

tak for hjælpen!
/Anders
Avatar billede grafik-anders Seniormester
19. juli 2005 - 23:28 #20
hmmmm , - det er svært det her!

kan jeg også få et svar fra erikjacobsen?
Avatar billede erikjacobsen Ekspert
19. juli 2005 - 23:29 #21
Jeg samler slet ikke på point, tak.
Avatar billede webt Nybegynder
19. juli 2005 - 23:30 #22
Det er bare i orden, hovedsagen er du har fået den bedste løsning fra erikjacobsen og thulstrup, og samtidig har jeg lært noget nyt om Flash, det er rigelig belønning for mig, hvorfor er det at vi "nørder" altid har det med at kaste os ud i den mest besværlige løsning?? :D ja sådan har jeg det i hvert fald ofte

Kan i ha en god aften, tror min hjerne skal til soveland

Godnat til alle
Martin
Avatar billede larsholmgaard_dk Nybegynder
19. juli 2005 - 23:35 #23
Det fede er jo netop at man kan sidde og rive hår ud af hovedet, fordi et eller andet ikke virker, hvor det BURDE virke. Den frustration gør at man tænker kreativt, for at finde en anden teknisk løsning. Det er heller ikke sikkert at den anden løsning fungerer, men når man først får hul på det og det lykkes - så er det cool! Alle de timer jeg har brugt på at bande flash langt væk, med dens små særheder og indimellem også fejl, der har gjort at ens virkelighedsopfattelse smuldrede... hehe, åååh... those memories. ;-)
Avatar billede grafik-anders Seniormester
19. juli 2005 - 23:45 #24
hmmm,,,, hvad med thulstrup ? - vil du sende et svar?
Avatar billede thulstrup Nybegynder
20. juli 2005 - 00:47 #25
Behold du bare dine pointe. Det virker virker forkert at jeg skal have dem, når der var andre der bidrog med meget mere :o)
Avatar billede grafik-anders Seniormester
20. juli 2005 - 08:59 #26
tja... --- så får webt dem!
Avatar billede barklund Nybegynder
20. juli 2005 - 10:21 #27
parseFloat er til at parse kommatal i det decimale talsystem. parseInt er til at parse heltal i et vilkårligt talsystem:

var tal:Number = parseInt("000010000", 10);

Problemet med Number-konverteringsfunktionen er, at normalt vil tal starterende med et 0 skulle evalueres i det oktale talsystem. Men med parseInt kan man angive, i hvilket talsystem, cifrene skal tolkes.

Ville jeg bare lige pointere, hvis nogen stadig var i tvivl (selvom i vist har fået dækket det hele).

Og det og meget andet ville du faktisk kunne læse i min bog[1] - specifikt i kapitel 4 om simple datatyper. :)

[1] http://globe.dk/?action=detail&vare=FG227-7

--
Morten Barklund
Avatar billede grafik-anders Seniormester
20. juli 2005 - 11:33 #28
lyder som en spændende bog, - den vil jeg prøve at finde på bib, - og hvis det er noget: måske også købe den.

tak!
Avatar billede webt Nybegynder
20. juli 2005 - 12:29 #29
En anden gang kan du bare lægge et svar selv og acceptere det så ryger points tilbage til dig,

Som sagt er jeg ikke vild med at modtage point for min kvaksalver løsning, så hvis du vil kan jeg oprette et spørgsmål med point tilbage til dig, selvfølgelig helt op til dig

Og ja Lars, et sådan system ville være lækkert, men det sker jo nok aldrig, og ps, lækker side du har fået strikket dig sammen.

Fortsat god dag
Martin
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