2010-05-19 9 views
14

¿Sabes si toFixed es una función localizada?Javascript toFixed localized?

quiero decir, ¿esto:

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

espectáculo "100.67" en inglés nos OS/navegadores y "100,67" (con coma) en OS/navegadores italianos? (italiano o cualquier otro sistema local que use coma como separador decimal).

Gracias!

+1

Eche un vistazo a ['Number.toLocaleString()'] (https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/Number/ToLocaleString). –

Respuesta

11

No, esto siempre devolverá un punto. El ECMA 262-spec [15.7.4.5] establece que debe ser un punto.

0

No, lamentablemente, no existe una solución real en jQuery/JavaScript puro. Necesitarás Globalize. El problema es que tanto toFixed() como toLocaleString() toman un número y devuelven una cadena. Entonces nunca puedes usarlos juntos. :(Si llama a foo.toFixed (2) .toLocaleString() no obtendrá la localización (es decir, '1.234' en en debe ser '1.234' en fr) porque está trabajando en el resultado de toFixed() que es un . cadena, no un número :(

0

puede utilizar este:

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

en mi sistema alemán es el resultado

100,67 
+4

Este es un hack inteligente, pero no funcionará correctamente para 100.00, lo que dará como resultado "100" a través deLocaleString() –

+0

¡Agradable para mí! ¡Gracias! – Goin

1

es fácil de piratear su limitación

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

no funciona si num = 1000.1 por ejemplo, porque decimalSeparator será ".", Usando "es-ES" como configuración regional. – oriolparra

Cuestiones relacionadas