我想在Javascript中进行数字格式化...我使用以下方法 num.toLocaleString()适用于Firefox,IE但不适用于谷歌浏览器.. Wat我需要在Chrome浏览器中添加它。
答案 0 :(得分:4)
根据定义,toLocaleString()
方法依赖于实现:它使用实现区域设置,例如浏览器区域设置。因此,如果我查看使用该方法的页面,我会看到根据芬兰语或英语区域设置格式化的数字,具体取决于我使用的浏览器。
您想要的是按页面的区域设置进行本地化,为此您还需要其他内容。在简单的情况下,您可以自己编写代码,但数字格式通常很复杂,因此使用库是合理的,例如Globalize。查看简单demo的紧凑来源。在Globalize中,您在指定区域设置时使用standard language codes。
答案 1 :(得分:3)
国际化始终具有挑战性,不幸的是,它似乎没有一致/普遍的解决方案。您最好的选择是使用第三方图书馆为您处理事情。 我们严重依赖googles闭包库,它有一些非常强大的i18n(国际化)工具。请查看http://www.daveoncode.com/2009/11/26/goog-i18n-numberformat-formatting-number-locale-string/以获取如何使用它的示例。最后,它变得如此简单:
// define italian number format symbols
goog.i18n.NumberFormatSymbols = goog.i18n.NumberFormatSymbols_it_IT;
// create new decimal formatter (PERCENT, CURRENCY, SCIENTIFIC are options)
formatter = new goog.i18n.NumberFormat(goog.i18n.NumberFormat.Format.DECIMAL);
// view formatted and localized string
alert(formatter.format(15650.579));
如果您不熟悉关闭,请不要担心。设置并不难,并且有许多优秀的帮助程序类,您可能会发现它们很有用。 http://code.google.com/closure/library/docs/gettingstarted.html
答案 2 :(得分:1)
JavaScript国际化支持非常差(正如您所发现的那样)。 你可以看一下https://github.com/jquery/globalize 它处理数字格式,以及日期,时间,货币。
答案 3 :(得分:0)
A bit of voodoo can implement your own number formatting. You could build this into String.prototype, but I didnt want that, since its localized.
function reverse(str) {
return str.split('').reverse().join('');
}
function num2str(num) {
var str = num+"";
// european
// return reverse(reverse(str.replace('.',',')).replace(/\d{3}/g,'$&.').replace(/\.$/,''));
// american
return reverse(reverse(str).replace(/\d{3}/g,'$&,').replace(/\,$/,''));
}
and then its
> console.log(25000.45)
> 25,000.45