你知道 toFixed 函数是否具有本地化的特性吗?
我的意思是,这个函数是否与语言环境相关:
var n = 100.67287;
alert(n.toFixed(2));
如何在美国英语操作系统/浏览器上显示"100.67",并在意大利或其他使用逗号作为小数点分隔符的本地操作系统/浏览器上以"100,67"的形式显示?
谢谢!
你知道 toFixed 函数是否具有本地化的特性吗?
我的意思是,这个函数是否与语言环境相关:
var n = 100.67287;
alert(n.toFixed(2));
如何在美国英语操作系统/浏览器上显示"100.67",并在意大利或其他使用逗号作为小数点分隔符的本地操作系统/浏览器上以"100,67"的形式显示?
谢谢!
Number.toLocaleString()
可在除了IE 10及以下版本外的所有浏览器上运行,虽然这种方法较为冗长:
var n = 100.67287;
console.log(n.toLocaleString(undefined, {
minimumFractionDigits: 2,
maximumFractionDigits: 2
}));
使用 undefined 或“ default”作为语言代码将使用浏览器默认语言格式化数字。
有关完整详细信息,请参见 developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString 。
如果您可以自由扩展Number原型,则可以定义 Number.toLocaleFixed()。
Number.prototype.toLocaleString
会根据区域设置格式化小数点,例如将"100.67287"
格式化为"100,67287"
。而toFixed
则绕过了这一点,始终使用.
作为小数点。你的建议将使用String.prototype.toLocaleString
,但它不再了解n
的数值属性。 - Sebastian SimonNumber.prototype.toLocaleString
会根据语言环境格式化小数点,例如,使用逗号分隔的形式"100,67287"
而不是"100.67287"
。toFixed
则绕过了这一点,始终使用.
作为小数点。你的建议将使用String.prototype.toLocaleString
,但它不再了解n
的数值属性。 - undefined不,这将始终返回一个点。 ECMA 262 规范 [15.7.4.5] 指出应该是一个点。
var n = 100.67287;
alert(parseFloat(n.toFixed(2)).toLocaleString());
在我的德语系统上,结果是
100,67
很遗憾,纯jQuery/JavaScript没有真正的解决方案。您需要使用Globalize。问题在于toFixed()和toLocaleString()都接受一个数字并返回一个字符串。因此,您永远无法将它们一起使用。:( 如果您调用foo.toFixed(2).toLocaleString(),您将无法获得本地化(即en中的'1.234'应为fr中的'1,234'),因为它正在处理toFixed()的结果,而toFixed()是一个字符串,而不是一个数字。:(
Number.toLocaleString()
。 - Alex K.