---
title: "Uträkning med lokaliserade tal"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/176361-uträkning-med-lokaliserade-tal"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "MickeA.com"
published: "2009-01-15T12:10:26.000Z"
updated: "2009-01-22T15:10:29.000Z"
replies: 9
views: 413
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/176361-uträkning-med-lokaliserade-tal"
---

# Uträkning med lokaliserade tal

## #1 — MickeA.com, 2009-01-15T12:10Z

Hej,

Har lite problem med en uträkning i javascript.
Visar ett tal på hemsidan, låt säga att det är *123 456,00* (etthundratjugotretusenfyrahundrafemtiossex).

Värdet lokaliseras beroende på vilket språk som är valt. De olika varianterna ser ut såhär:

```
Svenska - 123 456,00
Engelska - 123,456.00
Italienska - 123.456,00
```

När jag nu ska ta det värdet och dra av 10 000 så blir det fel, det "första" värdet tolkas som 123 istället för 123 456.

Finns det någon enkel lösning på det här?

Tack,

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

## #2 — MickeA.com, 2009-01-22T14:06Z

Inga idéer?
Skulle verkligen behöva en lösning på det här.

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

## #3 — spango, 2009-01-22T14:30Z

Tror inte det finns någon korrekt lösning, men du kan ju pröva ett fulhack som utgår ifrån att den sista icke-siffran är decimaltecknet. Typ så här:

```
function parseFloatL10nFulhack(s){
    return parseFloat(s.replace(/\s+/g, "").replace(/\D(?=\d*\D)/g, "").replace(/\D/, "."));
}
```

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

## #4 — nitro2k01, 2009-01-22T14:37Z

```
<script>

function parseCustomNumber(n){
	if(/^\s*\d{0,3},?\d{1,3}\.\d\d\s*$/.test(n)){//Engelska
		return parseFloat(n.replace(/[,\s]/g, ""));
	}else{
		return parseFloat(n.replace(/[.\s]/g, "").replace(",", "."));
	}

}

// Test
alert("Svenska\t" + (parseCustomNumber("123 456,00")-10000));
alert("Engelska\t" + (parseCustomNumber("123,456.00")-10000));
alert("Italienska\t" + (parseCustomNumber("123.456,00")-10000));
</script>
```

Denna kod funkar bara om du bara använder precis de tre lokaliseringarna, och inga andra. Vidare tillåts i den koden bara sex siffror till vänster om decimalpunkten. Behöver du mer?

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

## #5 — MickeA.com, 2009-01-22T14:39Z

Aha, det var ju dåligt...
Det finns ingen funktion likt *setLocale* för att tvinga scriptet att beräkna på "rätt" sätt?

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

## #6 — MickeA.com, 2009-01-22T14:40Z

> **nitro2k01 skrev:**
>
> Denna kod funkar bara om du bara använder precis de tre lokaliseringarna, och inga andra. Vidare tillåts i den koden bara sex siffror till vänster om decimalpunkten. Behöver du mer?

Sajten finns i nuläget på 7 språk och fler kommer tillkomma, så berhöver en lösning som funkar korrekt.

Tror jag struntar i det här helt och hållet istället.
Värdet kan nämligen vara 1, 10, 100, 123 456 eller vad som helst.

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

## #7 — nitro2k01, 2009-01-22T14:45Z

Spangos lösning bör funka som du vill.

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

## #8 — MickeA.com, 2009-01-22T14:48Z

> **nitro2k01 skrev:**
>
> Spangos lösning bör funka som du vill.

Problemet är att jag tror inte att alla tal har 1 eller 2 decimaler och då funkar det ändå inte, right?

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

## #9 — spango, 2009-01-22T14:59Z

Testa och se. Varför skulle det inte funka?

**red.** Jaså, nu hajar jag - släng in 1000000 formaterat med amerikanska regler (1,000,000), och den tror att det är 1000.000 vi menar.

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

## #10 — MickeA.com, 2009-01-22T15:10Z

Precis, men jag ska testa lite så får vi se.

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/176361-uträkning-med-lokaliserade-tal
