你知道
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 或“默认”作为语言代码将使用浏览器默认语言来格式化数字。
请参阅 developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString 了解完整详细信息。
如果您可以自由扩展 Number 原型,您可以定义
Number.toLocaleFixed()
。
不,这总是会返回一个点。 ECMA 262-spec [15.7.4.5] 声明它应该是一个点。
您可以使用这个:
var n = 100.67287;
alert(parseFloat(n.toFixed(2)).toLocaleString());
在我的德国系统上,结果是
100,67
遗憾的是,纯 jQuery/JavaScript 中没有真正的解决方案。你需要全球化。问题是 toFixed() 和 toLocaleString() 都接受一个数字并返回一个字符串。所以你永远不能一起使用它们。 :( 如果您调用 foo.toFixed(2).toLocaleString() 您将无法获得本地化(即 en 中的“1.234”应该是 fr 中的“1,234”),因为它对 toFixed() 的结果起作用,这是一个字符串,不是数字。:(