---
title: "Formatera tal"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/69652-formatera-tal"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "klementin"
published: "2003-02-28T09:55:05.000Z"
updated: "2003-03-01T09:59:36.000Z"
replies: 8
views: 290
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/69652-formatera-tal"
---

# Formatera tal

## #1 — klementin, 2003-02-28T09:55Z

Är ute efter ett skript som ändrar ett värde i ett INPUT-fält till decimaler (för valuta) i realtid, t.ex.: 1 = 1,00 eller 0,2 = 0,20 alltså 0 kronor och 20 öre. Hittade ett skript från Erik Juhlin här på forumet men vet inte hur jag ska göra för att få det att fungera (kan inte javascript, men använder det gärna).

Skriptet från Erik:

```
function round(number, numdecdig)
{
	if (numdecdig == null) return number;
	
	var n = Math.pow(10, numdecdig);
	
	number = parseInt(number * n);
	number = number / n;
	
	return number;
}

alert(round(143325.545, 2));
```

 

Och min formulärs kod ser ut så här:

```
<FORM method="POST" name="f_valuta">
<INPUT type="text" name="f_valuta_data" value="" onChange=" -- här ska väl formulärsdatat skickas till skriptet, tror jag --"">
</FORM>
```

Tack på förhand!

Permalänk: https://www.webforum.nu/p/69652

## #2 — Jojoxx, 2003-02-28T10:35Z

Jag skulle modda funktionen lite så här;

```
<script type="text/javascript" language="JavaScript">
function round(number, numdecdig){
	if(isNaN(number)||isNaN(numdecdig)){return ""}
	var n=Math.round(number*Math.pow(10,numdecdig))+"";
	return n.substring(0,n.length-2)+"."+n.substring(n.length-2);
}
</script>
<FORM method="POST" name="f_valuta">
<INPUT type="text" name="f_valuta_data" value="" onChange="this.value=round(parseFloat(this.value),2)">
</FORM>
```

Så att 12 blir 12.00

Permalänk: https://www.webforum.nu/p/965660

## #3 — klementin, 2003-02-28T11:21Z

Tack Jojoxx!

Funkar ju klockrent, nästan... Om man t.ex. skriver in 0,20 så formateras det till ,0 och samma sak händer på alla 0,xx värden. Och skriver man in t.ex 20,20 så blir det 20,00. Är det lät att fixa tro?

Permalänk: https://www.webforum.nu/p/965691

## #4 — Peter S, 2003-02-28T11:55Z

Här är en funktion som jag har skrivit:

```
function FormatCurrency(e,c){
	var n = Math.round(e*Math.pow(10,2))/Math.pow(10,2);
	return ((n.toString().indexOf(".")==-1)?c+n+".00":(n.toString().substring(n.toString().indexOf(".")+1,n.toString().length).length)>1?c+n.toString():c+n.toString()+"0");
};
```

Som du använder så här:
alert(FormatCurrency(12.23, "SEK"));

Den andra parametern kan du skriva som "", "hej" eller vad som helst.

 :)

Permalänk: https://www.webforum.nu/p/965715

## #5 — klementin, 2003-03-01T08:23Z

Hm, nu när jag skirver 0,1 blir det svaret NaN,00?! Så här ser min kod ut nu men jag är säkert ute och cyklar helt:

```
<script type="text/javascript" language="JavaScript">
function round(number){
	var n = Math.round(number*Math.pow(10,2))/Math.pow(10,2);
	return ((n.toString().indexOf(",")==-1)?n+",00":(n.toString().substring(n.toString().indexOf(",")+1,n.toString().length).length)>1?n.toString():n.toString()+"0");
}
</script>

<FORM method="POST" name="f_valuta">
<INPUT type="text" name="f_valuta_data" value="" onChange="this.value=round(this.value)">
</FORM>
```

jag har bytt ut . (punkt) mot , (komma) eftersom det är så det skrivs i databasen senare...

Permalänk: https://www.webforum.nu/p/966174

## #6 — Peter S, 2003-03-01T08:30Z

Det är för att du inte har kopierat in den fullständiga koden. Anropa sedan funktionen så här:

```
...
onChange="this.value=round(this.value, [b]""[/b])">
...
```

Notera att den sista parametern till funktionen är **""**. Skriver du t.ex.: **"SEK"** blir resultatet följande:

SEK*något tal*

 :)

Permalänk: https://www.webforum.nu/p/966175

## #7 — klementin, 2003-03-01T08:52Z

Så går det när man försöker sig på något utan att veta vad man pysslar med ;) .

Tänkte på en sak, måste inte input värdet vara i formatet xx.xx för att det skall fungera? Som jag har gjort har jag matat in värderna med formatet xx,xx vilket jag tror orsakar problem. Kan man ändra ett xx,xx värde till xx.xx i skriptet innan man formaterar om värdet? Skulle helst vilja ha det så då det som sagt är så det skrivs i databasen lite senare.

Permalänk: https://www.webforum.nu/p/966176

## #8 — Peter S, 2003-03-01T09:07Z

Så här:

```
function FormatCurrency(e,c){
	var n = Math.round(e*Math.pow(10,2))/Math.pow(10,2);
	return ((n.toString().indexOf(".")==-1)?c+n+".00":(n.toString().substring(n.toString().indexOf(".")+1,n.toString().length).length)>1?c+n.toString():c+n.toString()+"0").replace(/[.]/g,",");
};
```

Mata t.ex. in värdet i formatet: 12.23 så byter skriptet ut alla "." mot ",".

 :)

Permalänk: https://www.webforum.nu/p/966180

## #9 — klementin, 2003-03-01T09:59Z

Jag tänkte mig att , skulle bytas ut till punkt innan uträkningen sker, men det är ok, jag hittade detta skript på  [irt.org](http://developer.irt.org/script/script.htm) och det fungerade klockrent:

```

<SCRIPT LANGUAGE="JavaScript"><!--
function OutputPengar(Number) {
myNumber = parseFloat(Number.split(',').join('.'));

    return OutputKronor(Math.floor(myNumber-0) + '') + OutputOre(myNumber - 0);
}

function OutputKronor(myNumber) {
    if (myNumber.length <= 3)
        return (myNumber == '' ? '0' : myNumber);
    else {
        var mod = myNumber.length%3;
        var output = (mod == 0 ? '' : (myNumber.substring(0,mod)));
        for (i=0 ; i < Math.floor(myNumber.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= myNumber.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + myNumber.substring(mod+3*i,mod+3*i+3);
        }
        return (output);
    }
}

function OutputOre(amount) {
    amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
    return (amount < 10 ? ',0' + amount : ',' + amount);
}

//--></SCRIPT>

<FORM method="POST" name="f_valuta">
<INPUT type="text" name="f_valuta_data" value="" onChange="this.value=OutputPengar(this.value);">
</FORM>
```

 

Men ett stort **TACK** till er båda för hjälpen ialla fall :) !

Permalänk: https://www.webforum.nu/p/966187

---

Tråden på webben: https://www.webforum.nu/amne/javascript/69652-formatera-tal
