27. september 2007 - 13:28Der er
11 kommentarer og 1 løsning
Formatering af tal
Hej alle, Jeg er sat på lidt af en prøve, og har også søgt herinde efter svar, men har ikke fundet dét jeg skulle bruge. Håber I kan hjælpe...
Jeg skal lave nogle udregninger som skal regne decimaler med. Problemet i første omgang er at java regner efter den engelske model, sådan et tal er 1,100.00 men vi danskere skriver 1.000,00
Så jeg vil ikke bede mine brugere bruge det engelske talsystem som stort set alle andre hjemmesider gør.
"forbrug" og "kostpris" er de felter brugeren taster ind og det er her jeg gerne vil kunne skrive f.eks 122,23 kundePris, voresPris og besparelse skal udskrives med 1000 separator eks 1.122,00
<script LANGUAGE="JavaScript"> var forbrug = parseFloat(document.udregn.kundeForbrug.value); var kostpris = parseFloat(document.udregn.kundeKostpris.value);
var kundePris=(forbrug*kostpris)*52; document.udregn.kundePris.value=kundePris;
var voresPris=(forbrug*998.75)*52; document.udregn.voresPris.value=voresPris;
var besparelse=kundePris-voresPris; document.udregn.besparelse.value=besparelse; </script>
Ehm jeg er helt grøn inden for dette område. Så mit bedste svar er html og arbejder i dreamweaver.. Ved godt det nok ikke lige det du mente, men har ikke andre svar muligheder ;-)
Javascript kan ikke forstå den engelske tusindtalsseparator, så hvis du indtaster 1,100.75 forstår javascript parseFloat(1,100.75) som 1, i hvert fald ud fra en test, jeg lige har lavet.
Hvis du glemmer denne seperator bliver det dog meget nemmere. Så udskifter du blot: parseFloat(document.udregn.kundeForbrug.value); med: parseFloat(document.udregn.kundeForbrug.value.replace(",",".")) for at konvertere til den engelske skrivemåde.
Og for at konvertere tilbage igen bruger du blot: document.udregn.besparelse.value=besparelse.toString().replace(".",",");
Og for at fjerne lidt forvirring, så spørger Bjorn vist sådant, fordi du kom til at skrive java lidt oppe, og så er vi ovre at snakke programmering, hvor platform (styresystem) har noget at sige.
Det er helt perfekt 1.000 tak for det.. :-) Dog kan jeg stadig ikke få 1000 separatoren igang og at der skal være 2 decimaler efter kommaet. Er det noget du også kan hjælpe mig med?
Og tak for at fjerne en eventuelt forvirring :-) Dog ligger denne besked under javascript, så regnede ikke med at det skulle betyde noget at kortfatte mig til java, men har lige fået i fordrag om at der er stor forskel, så det hedder javascript! :)
Kan du ikke prøve at give en lidt mere præcis beskrivelse. Når du siger, at der skal være 2 decimaler efter kommaet, SKAL der så være det, og er det fejlmelde omkring (give en alert til besøgeren)?
Og har tallene en vis størrelse? Hvis de har det, kan det godt blive lidt nemmere at sætte punktummer for hvert 1000.
Woow. Har sgu lige løst det selv. "stolt som bare ......!!!"
Aii jeg fandt på en hjemmeside en format decimal.
function formatDecimal(argvalue, addzero, decimaln) { var numOfDecimal = (decimaln == null) ? 2 : decimaln; var number = 1;
number = Math.pow(10, numOfDecimal);
argvalue = Math.round(parseFloat(argvalue) * number) / number; // If you're using IE3.x, you will get error with the following line. // argvalue = argvalue.toString(); // It works fine in IE4. argvalue = "" + argvalue;
if (argvalue.indexOf(".") == 0) argvalue = "0" + argvalue;
if (addzero == true) { if (argvalue.indexOf(".") == -1) argvalue = argvalue + ".";
Jeg har ikke lige styr på hvilket format udgangspunktet er men hvis vi nu siger at udgangspunktet er det som formatDecimal returnere så kan det her måske bruges...
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.