2010-05-19 6 views
14

Savez-vous si toFixed est une fonction localisée?Javascript est affecté à Localisé?

Je veux dire, ce sera:

var n = 100.67287; 
alert(n.toFixed(2)); 

show "100,67" sur l'anglais américain OS/navigateurs et "100,67" (avec virgule) sur italien OS/navigateurs? (italien ou tout autre système local qui utilise une virgule comme séparateur décimal).

Merci!

+1

Jetez un coup d'œil à ['Number.toLocaleString()'] (https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Number/ToLocaleString). –

Répondre

11

Non, cela retournera toujours un point. Le ECMA 262-spec [15.7.4.5] indique que ce devrait être un point.

0

Non, malheureusement, il n'y a pas de vraie solution en jQuery/JavaScript pur. Vous aurez besoin de Globalize. Le problème est que toFixed() et toLocaleString() prennent un nombre et retournent une chaîne. Donc vous ne pouvez jamais les utiliser ensemble. :(Si vous appelez foo.toFixed (2) .toLocaleString() vous n'obtiendrez pas la localisation (ie '1.234' dans en devrait être '1.234' en fr) car il travaille sur le résultat de toFixed() qui est un . chaîne, pas un nombre :(

0

Vous pouvez utiliser ceci:

var n = 100.67287; 
alert(parseFloat(n.toFixed(2)).toLocaleString()); 

Sur mon système allemand, le résultat est

100,67 
+4

Ceci est un hack intelligent, mais ne fonctionnera pas correctement pour 100.00, ce qui se traduira par "100" via toLocaleString() –

+0

Nice pour moi! Merci! – Goin

1

Il est facile de pirater sa limitation

var num = 0.1; 
var decimalSeparator = num.toLocaleString().replace(/\d/g, ''); 
var numWithLocalizedSeparator = num.toFixed(2).replace('.',decimalSeparator); 
.
+0

cela ne fonctionne pas si num = 1000.1 par exemple, car decimalSeparator sera ".", En utilisant "es-ES" comme locale. – oriolparra

9

plus tard: avec Number.toLocaleString() maintenant disponible sur tout bar IE 10 & ci-dessous, cela fonctionne, mais plutôt de longue haleine:

var n = 100.67287; 
alert(n.toLocaleString(undefined, { minimumFractionDigits:2, maximumFractionDigits:2 })); 

Voir developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString pour plus de détails.

Si vous êtes libre d'étendre le prototype de nombre, vous pouvez définir Number.toLocaleFixed().

Questions connexes