/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Regne med dansk talformat
Fra : Kim Ludvigsen


Dato : 28-02-11 07:31

Hvordan får jeg JavaScript til at regne med dansk talformat
i stedet for engelsk? Og så tusindadskiller ignoreres?

Altså, så jeg fx kan udregne 5.000,25 * 5,25.

--
Mvh. Kim Ludvigsen
Undgå faldgruberne, sådan vælger du det rette webhotel:
http://kimludvigsen.dk/tips-internet-websnedker-webhotel.php

 
 
Birger Sørensen (28-02-2011)
Kommentar
Fra : Birger Sørensen


Dato : 28-02-11 08:43

Kim Ludvigsen kom med denne ide:
> Hvordan får jeg JavaScript til at regne med dansk talformat i stedet for
> engelsk? Og så tusindadskiller ignoreres?
>
> Altså, så jeg fx kan udregne 5.000,25 * 5,25.

Det gør du ikke.
Du er nødt til at omskrive tallene, så de er repræsenteret rigtigt, og
uden tusind adskillere.
Altså en rutine der fjerner . og erstatter , med .
Skal du bruge resultatet formatteret, må du så formattere det bagefter.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kim Ludvigsen (28-02-2011)
Kommentar
Fra : Kim Ludvigsen


Dato : 28-02-11 08:55

Birger Sørensen skrev:
> Kim Ludvigsen kom med denne ide:
>> Hvordan får jeg JavaScript til at regne med dansk
>> talformat i stedet for engelsk? Og så tusindadskiller
>> ignoreres?
>
> Du er nødt til at omskrive tallene, så de er repræsenteret
> rigtigt, og uden tusind adskillere.

Ok, tak.

> Altså en rutine der fjerner . og erstatter , med .

Kender du sådan en færdig en? Jeg har ikke styr på
JavaScript, og det er jo ikke nok bare at udskifte . og ,
eftersom begge kan forekomme, altså en rutine som tager
højde for, om der er indtastet 5.000,25 eller 5,000.25.

Jeg har ikke kunnet finde noget brugbart på nettet, sikkert
fordi jeg ikke ved, hvilke søgeord der er relevante.

--
Mvh. Kim Ludvigsen
Tips til hjemmesidesnedkeren:
http://kimludvigsen.dk/tips-internet-websnedker-multimedia.php

Birger Sørensen (28-02-2011)
Kommentar
Fra : Birger Sørensen


Dato : 28-02-11 09:38

Kim Ludvigsen formulerede mandag:
> Birger Sørensen skrev:
>> Kim Ludvigsen kom med denne ide:
>>> Hvordan får jeg JavaScript til at regne med dansk
>>> talformat i stedet for engelsk? Og så tusindadskiller
>>> ignoreres?
>>
>> Du er nødt til at omskrive tallene, så de er repræsenteret
>> rigtigt, og uden tusind adskillere.
>
> Ok, tak.
>
>> Altså en rutine der fjerner . og erstatter , med .
>
> Kender du sådan en færdig en? Jeg har ikke styr på JavaScript, og det er jo
> ikke nok bare at udskifte . og , eftersom begge kan forekomme, altså en
> rutine som tager højde for, om der er indtastet 5.000,25 eller 5,000.25.
>
> Jeg har ikke kunnet finde noget brugbart på nettet, sikkert fordi jeg ikke
> ved, hvilke søgeord der er relevante.

Nej jeg kender ikke sådan en færdiglavet ^^

Jeg ved faktisk ikke, hvilke muligheder der ligger i Number objectet -
eller om der overhovedet er nogen.
Umiddelbart ville jeg så erstatte alle ,'er med .'er, og derefter
fjerne forfra, til der kun er een tilbage - hvis der altid tastes
decimaler. Men det er formentlig heller ikke sådan det er, og så bliver
det svært.
Her begynder vi så at komme ud i noget med at programmet skal have en
eller anden form for viden om det indtastede, for at have chance for at
gætte rigtigt.
Det simpleste er i virkeligheden, at sørge for at input er rigtigt.
Altså gøre brugeren opmærksom på, at der skal indtastet i et givet
format.
Man kan bruge onkeydown (eller -up eller onkeypress) til at begrænse
fejltastninger, eller begrænse indtastninger til numerisk og ., Det kan
sikkert lade sig gøre med regexp, også at dekode sig til formatet, men
her må andre træde til.
F.eks. ville jeg kun acceptere tal uden tusind adskillere - altså kun
eet eller ingen decimalpunkt - der så kan være enten . eller ,
Danske tastaturer, bruger vist , som decimaltagn på det numeriske
tastatur, men det er ikke så vanskeligt at programmere sig ud af, når
man ved at der kun skal være eet decimaltegn - hvis der overhovedet er
noget.

Håber det spreder lidt lys - ellers må du skrive igen. Men det bliver
ikke før i aften, hvis du skal have eksempel.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kim Ludvigsen (28-02-2011)
Kommentar
Fra : Kim Ludvigsen


Dato : 28-02-11 11:06

Birger Sørensen skrev:
> Kim Ludvigsen formulerede mandag:
>>
>>> Altså en rutine der fjerner . og erstatter , med .
>>
>> Kender du sådan en færdig en?
>
> Nej jeg kender ikke sådan en færdiglavet ^^
>
> Jeg ved faktisk ikke, hvilke muligheder der ligger i Number
> objectet - eller om der overhovedet er nogen.
....
> og så bliver det svært.

Når /du/ siger, det er svært, så har jeg nok ikke mange
chancer for at finde ud af det.

> Det simpleste er i virkeligheden, at sørge for at input er
> rigtigt. Altså gøre brugeren opmærksom på, at der skal
> indtastet i et givet format.

Det vil jeg så gøre, tak!

--
Mvh. Kim Ludvigsen
Omfattende brugerguide for begyndere om ubuntu Linux:
http://kimludvigsen.dk/linux


Birger Sørensen (28-02-2011)
Kommentar
Fra : Birger Sørensen


Dato : 28-02-11 17:53

Kim Ludvigsen tastede følgende:
> Birger Sørensen skrev:
>> Kim Ludvigsen formulerede mandag:
>>>
>>>> Altså en rutine der fjerner . og erstatter , med .
>>>
>>> Kender du sådan en færdig en?
>>
>> Nej jeg kender ikke sådan en færdiglavet ^^
>>
>> Jeg ved faktisk ikke, hvilke muligheder der ligger i Number
>> objectet - eller om der overhovedet er nogen.
> ...
>> og så bliver det svært.
>
> Når /du/ siger, det er svært, så har jeg nok ikke mange chancer for at finde
> ud af det.
>
>> Det simpleste er i virkeligheden, at sørge for at input er
>> rigtigt. Altså gøre brugeren opmærksom på, at der skal
>> indtastet i et givet format.
>
> Det vil jeg så gøre, tak!

Hvis du bestemmer dig for, at brugerne skal indtaste uden
tusind-adskiller, mens decimaladskilleren kan være enten , eller . og
må gerne udelades, hvis der ingen decimaler er.

function ToNum( x) {
x = x.replace( ',', '.'); // erstatter et evt , som
decimalseparator med .
return Number( x);
}

Er a og b en repræsentation af de to tal, vil

resultat = Number( ToNum( a) * ToNum( b)).toLocaleStr();

hvor resultat er en streng, der indeholder resultatet, formatteret
efter brugerens PC's sprog.

Er ikke testet, og der gives kun eksempler på engelsk, så.... ;>)
Er heller ikke sikker på, at IE's version af javascript (JScript) vil
gøre tingene rigtigt.
Jeg mindes noget med at replace erstatter den første i IE, men alle i
de rigtige browsere.

Så du skal nok have en gentagen erstatning, som f.eks.
while ( x.indexOf( ',') > -1) { x.replace( ',', '.'); }

hvis du vil bruge den sammen med nedenstående.

Det vil formentlig være fornuftigt med et check på, at der ikke er
flere decimaltegn, end det ene der må være - konvertering til et tal,
vil gå galt ellers.

function DecOK( x) {
return ( x.indexOf( '.') == x.lastIndexOf( '.'));
}

vil returnere sand, hvis der er ingen eller eet . og falsk hvis der er
mere end eet.

Så i alt vil det nok være noget med

function ToNum( x) {
while ( x.indexOf( ',') > -1) { x.replace( ',', '.'); }
// erstatter alle evt ,er med .er
return x;
}

var x1 = ToNum( a);
var x2 = ToNum( b);
var resultat = 'tal ikke brugbare - for mange decimalkarakterer';
if ( DecOK( x1) && DecOK( x2)) {
resultat = Number(x1 * x2).toLocaleStr();
}

Det kom lidt hen ad vejen... B-)
Håber du kan finde hoved og hale...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Kim Ludvigsen (28-02-2011)
Kommentar
Fra : Kim Ludvigsen


Dato : 28-02-11 19:32

Birger Sørensen skrev:
> Kim Ludvigsen tastede følgende:

>> Det vil jeg så gøre, tak!
>
> function ToNum( x) {

Aj, du skulle ikke bruge tid på det. Jeg har brugt den nemme
løsning og skrevet, at det skal være et heltal uden
tusindadskiller.

--
Mvh. Kim Ludvigsen
Hjælp til computeren og internettet:
http://kimludvigsen.dk

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste