Vik*_*tor 8 javascript formatting numbers
我将浮点数格式化为区域设置字符串(Euro),并且每个浏览器都有非常不同的结果.没有自己的功能可以修复吗?
var sum=2282.0000;
var formated_sum = Number(sum.toFixed(2)).toLocaleString("de-DE", {style: "currency", currency: "EUR"});
Run Code Online (Sandbox Code Playgroud)
Firefox结果:2.282,00€
Chrome结果:2.282€
IE结果:2.282,00€
野生动物园成绩:2282€
Safari结果非常错误,Chrome结果并没有那么糟糕.任何想法如何修复,而无需编写自己的格式化功能?
这个问题可能已经有了答案:toLocaleString()在不同浏览器中的行为不一致不,我的问题是不同的,因为我正在寻找货币的解决方案,而不是DATE
ECMA 262指定该函数依赖于实现并且不带任何参数。
\n\n\n生成一个表示此 Number 值的字符串值,该值的格式\n根据主机环境\xe2\x80\x99s 当前语言环境的约定进行格式化。\n此函数依赖于实现,并且允许但\n不鼓励它返回与 toString 相同。
\n注意此函数的第一个参数可能会在该标准的未来版本中使用;建议\n实现不要将此参数位置用于其他用途。
\n
它也在ECMA 国际化 API 规范中(对于Number.prototype.toLocaleStringECMA 262 但接受 2 个参数)
\n\n该定义取代 ES5 15.7.4.3 中提供的定义。
\n当使用可选参数\n区域设置和选项调用 toLocaleString 方法时,将执行以下步骤:
\n令 x 为该 Number 值(如 ES5, 15.7.4 中定义)。如果未提供区域设置,则让区域设置为未定义。如果未提供选项,则让选项未定义。令 numberFormat 为\n通过表达式 new\nIntl.NumberFormat(locales, options) 创建新对象的结果,其中 Intl.NumberFormat 是\n11.1.3 中定义的标准内置构造函数。返回使用 numberFormat 和 x 调用 FormatNumber 抽象操作(在 11.3.2 中定义)的结果。toLocaleString 方法的 length 属性值为 0。\n
\n
另外,MDN指定Safari不支持它。
\n至于可行的解决方案请参阅这个答案SO 上的
\n