2010-05-19 10 views
14

Wissen Sie, ob toFixed eine lokalisierte Funktion ist?Javascript zuFixed lokalisiert?

Ich meine, wird dies:

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

show "100,67" auf Englisch US OS/Browser und "100,67" (mit Komma) auf Italienisch OS/Browser? (Italienisch oder jedes andere lokale System, das Komma als Dezimaltrennzeichen verwendet).

Danke!

+1

Werfen Sie einen Blick auf ['Number.toLocaleString()'] (https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Number/ToLocaleString). –

Antwort

11

Nein, dies wird immer einen Punkt zurückgeben. Die ECMA 262-spec [15.7.4.5] besagt, dass es ein Punkt sein sollte.

0

Leider gibt es keine echte Lösung in reinem jQuery/JavaScript. Sie benötigen Globalize. Das Problem besteht darin, dass sowohl toFixed() als auch toLocaleString() eine Zahl annehmen und eine Zeichenfolge zurückgeben. Sie können sie also nie zusammen verwenden. :(Wenn Sie foo.toFixed (2) .toLocaleString() aufrufen, erhalten Sie keine Lokalisierung (dh '1.234' in en sollte '1,234' in fr sein), weil sie am Ergebnis von toFixed() arbeitet, was a ist . String, keine Zahl :(

0

Sie können diese verwenden:

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

auf meinem Deutsch-System ist das Ergebnis

100,67 
+4

Dies ist ein cleverer Hack, wird aber für 100,00 nicht korrekt funktionieren, was zu "100" über toLocaleString() führen wird. –

+0

Schön für mich! Vielen Dank! – Goin

1

Es ist leicht, seine Einschränkung zu hacken

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

es funktioniert nicht, wenn num = 1000.1 zum Beispiel, weil decimalSeparator wird ".," Mit "ES-ES" als Gebietsschema. – oriolparra

Verwandte Themen