working round not float decimals javascript localization

round - Javascript toFixed localized?



tofixed javascript (5)

Es fácil de hackear esta limitación.

var num = 1000.994; var fixedDecimals = 2; var intPart = parseInt(num.toFixed(fixedDecimals)); var decimalSeparator = (0.1).toLocaleString()[1] var decimalPart = (num % 1).toFixed(fixedDecimals).slice(2); alert(intPart.toLocaleString() + decimalSeparator + decimalPart);

¿Sabes si toFixed es una función localizada?

Quiero decir, será esto:

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

¿Mostrar " 100.67 " en inglés en el sistema operativo de los EE. UU. / navegadores y " 100,67 " (con coma) en el sistema operativo italiano / navegadores? (Italiano o cualquier otro sistema local que use coma como separador decimal).

¡Gracias!


Lamentablemente, no hay una solución real en jQuery / JavaScript puro. Necesitará globalizar. El problema es que tanto toFixed () como toLocaleString () toman un número y devuelven una cadena. Así que nunca puedes usarlos juntos. :( Si llama a foo.toFixed (2) .toLocaleString () no obtendrá la localización (es decir, ''1.234'' en es debería ser ''1.234'' en fr) porque está funcionando en el resultado de toFixed () que es un cadena, no un número. :(


No, esto siempre devolverá un punto. La ECMA 262-spec [15.7.4.5] establece que debería ser un punto.


Puedes usar esto:

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

En mi sistema alemán el resultado es

100,67


Number.toLocaleString() tardía: con Number.toLocaleString() ahora disponible en todas las barras IE 10 y siguientes, esto funciona, aunque es bastante largo:

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

Consulte developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString para obtener todos los detalles.

Si tiene la libertad de extender el prototipo de Número, podría definir Number.toLocaleFixed() .