NumberFormat 返回将数字转换为货币的错误格式

BUR*_*101 1 javascript formatting

代码:

\n\n

\r\n
\r\n
let currency = 400023;\r\nconsole.log(new Intl.NumberFormat(\'de-DE\', {\r\n  style: \'currency\',\r\n  currency: \'EUR\'\r\n}).format(currency));
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

预期: \n\xe2\x82\xac400.023,00

\n\n

实际: \n\xe2\x82\xac400,023.00

\n\n

在我在 JS 文档中找到的示例中,它显示点被用作千位分隔符,逗号被用作分,但当我自己使用它时,它不起作用。

\n

Fra*_*ane 5

正如 @RobG 指出的那样,这是您的 JS 实现的问题,它不能正确支持 Intl 对象。

当前所有浏览器都完全支持 Intl。

如果您在 Node.js 上运行代码,情况会稍微复杂一些。在 Node.js 13 之前,仅部分支持国际化(ICU),包括 Intl。

从 Node.js 13 开始,默认内置完整的 ICU/国际化支持。详情请参阅:

本质上,你可以运行这段代码:

console.log(new Intl.DateTimeFormat('es',{month:'long'}).format(new Date(9E8)));
Run Code Online (Sandbox Code Playgroud)

你的输出可能是:

  • 错误:不支持 ICU - 非常旧的浏览器/Node.js
  • 一月:部分支持 ICU - 旧浏览器/Node.js < 13
  • enero:完全支持 ICU - 最近的浏览器/Node.js >= 13

如果您坚持使用 Node.js < 13,您可以使用https://www.npmjs.com/package/full-icu回填完整的 ICU 支持。