如何将数字格式化为货币字符串

2024-05-10

我想用 JavaScript 格式化价格。我想要一个需要一个函数float作为参数并返回string格式如下:

"$ 2,500.00"

我怎样才能做到这一点?


国际数字格式 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/NumberFormat

JavaScript 有一个数字格式化程序(国际化 API 的一部分)。

// Create our number formatter.
const formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',

  // These options are needed to round to whole numbers if that's what you want.
  //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)
  //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)
});

console.log(formatter.format(2500)); /* $2,500.00 */

Use undefined代替第一个参数('en-US'在示例中)使用系统区域设置(代码在浏览器中运行时的用户区域设置)。区域设置代码的进一步解释 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation.

这是一个货币代码列表 https://www.iban.com/currency-codes.

Intl.NumberFormat 与 Number.prototype.toLocaleString

最后一点是将其与旧版本进行比较。toLocaleString。它们都提供本质上相同的功能。然而,toLocaleString 的旧版本(前 Intl)实际上并不支持语言环境 http://www.ecma-international.org/ecma-262/5.1/#sec-15.7.4.3:它使用系统区域设置。因此,在调试旧浏览器时,请确保您使用的是正确的版本(MDN 建议检查是否存在Intl https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString#Checking_for_support_for_locales_and_options_arguments)。如果您不关心旧浏览器或只是使用shim https://github.com/andyearnshaw/Intl.js.

而且,两者的性能对于single项目,但如果您有很多数字需要格式化,请使用Intl.NumberFormat快约 70 倍。因此,通常最好使用Intl.NumberFormat并且每次页面加载仅实例化一次。无论如何,这是等效的用法toLocaleString:

console.log((2500).toLocaleString('en-US', {
  style: 'currency',
  currency: 'USD',
})); /* $2,500.00 */

关于浏览器支持和 Node.js 的一些说明

  • 如今,浏览器支持不再是问题,全球支持率超过 99%
  • 有一个shim https://github.com/andyearnshaw/Intl.js在化石浏览器上支持它(例如互联网浏览器 8 https://en.wikipedia.org/wiki/Internet_Explorer_8),如果你真的需要
  • v13之前的Node.js仅支持en-US盒子外面。一种解决方案是安装full-icu https://github.com/icu-project/full-icu-npm, see here https://stackoverflow.com/a/39626602/1000608了解更多信息
  • 看一下CanIUse https://caniuse.com/#feat=internationalization了解更多信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将数字格式化为货币字符串 的相关文章

随机推荐

  • 为什么 Chrome 给 body 元素添加边距? [复制]

    这个问题在这里已经有答案了 我有简单的 html 文档 是进入身体的一种元素 当我在 div 元素中设置 margin top 时 Chrome 会向 body 添加相同的边距 边距仅在开发者工具中可见 我的代码 div Test div
  • 如何使用 json.net 在生成的 json 中“内联”属性

    我的一个类中有一个属性 我试图用 json net 序列化它 我想 内联 这意味着 我不想将该属性嵌套到具有属性名称的元素中 但其内容直接位于其父级中 这是一个例子 假设我有以下类结构 public interface ISteeringW
  • SQL 删除自动命名约束

    我使用脚本在表上创建了一些约束 但未指定约束名称 结果 我最终受到了像这样的限制FK DOC OBGS kntr 54E63309例如 是否可以在不指定确切的约束名称的情况下删除该约束 例如 类似这样的东西 不起作用 ALTER TABLE
  • 强制 PayPal 始终请求信用卡信息而不是登录表单?

    我们的网站采用贝宝付款标准 当用户在我们的网站上填写他们的请求并按下 PayPal 按钮 立即购买 时 我们会将所有变量提交给 PayPal 以便他们可以处理付款 对于那些以前从未使用过贝宝并通过我们的网站付款的用户来说 它运行得非常好 因
  • Twitter Future 与 Scala Future 相比有何优势?

    我知道 Scala Future 变得更好的很多原因 有什么理由改用 Twitter Future 吗 除了 Finagle 使用它这一事实之外 免责声明 我在 Twitter 负责 Future 的实施 一点背景知识 在 Scala 有一
  • ANSI 转义码在行尾有奇怪的行为

    重现步骤 考虑以下 shell 命令 echo e e 41mTest nTest2 e 0mTest3 它打印Test并在下一行中Test2具有红色背景 使用 ANSI 转义码 Test2后面直接是Test3这是无色的 行为 第一次执行此
  • 如果 url 不包含特定目录,则 htaccess 重定向

    使用 htaccess 我需要将所有不包含特定 URL 路径 医疗保健 的 URL 重定向到新域 同时保持原始 URL 不变 Example healthcare domain com anydirectory anything html
  • 重命名多索引数据框中的索引值

    创建我的数据框 from pandas import arrays bar bar baz baz foo foo qux qux one two one two one two one two tuples zip arrays inde
  • 如何将参数传递给 `transitions` 库中的 on_enter 回调?

    我想用过渡 https pypi org project transitions 并且需要一个我在文档中找不到的相当琐碎的功能 并且想知道它是否已实现 我想定义一个on enter在某些状态上回调 但将参数传递给该回调 至少知道我是从哪个状
  • 如何对工作区中的元素运行循环?

    gt ls 1 A anorex 1 anorexia B byMonth C clotting 8 counts d D d AD DelayByDay delayed glm D93 15 glmout groups h housing
  • 如何在 Three.js 场景中包含 OVRManager?

    我创建了几个 Three js Javascript 演示应用程序 正在我的新 Oculus Go 中进行试验 我正在尝试让 Go 控制器在我的应用程序中执行某些操作 根据 Oculus 开发人员中心的说法 最好的办法是将 OVRManag
  • 将 PyAudio Stream 输入和输出设置为 True 时出现 IOError: [Errno Input Overflowed] -9981

    我尝试在我的 Mac 操作系统 10 7 2 上运行以下代码 PyAudio 文档中的示例 import pyaudio import sys chunk 1024 FORMAT pyaudio paInt16 CHANNELS 1 RAT
  • 自动更改时 onChange 事件不起作用

    我在一个选择框 usageDisplays 上有一个 onChange 事件 它根据第一个选择框的选定值填充下一个选择框
  • 如何对 Docker 容器中运行的 Spring Boot 应用程序进行健康检查?

    我正在 Docker 容器中运行 Spring Boot 应用程序 使用 Docker 文件启动容器中的应用程序 如何检查容器内 Spring Boot 应用程序的运行状况 如果容器停止或应用程序未运行 我需要根据运行状况检查自动重新启动容
  • 云函数定时器

    我需要创建一个云函数来启动一个计时器 该计时器在 X 分钟后调用另一个云函数 它应该重复此 N 次 除非在达到 N 之前被告知停止 这可能吗 我一直在读到您只能使用外部 cron 作业或应用程序引擎来设置计时器 有可能以这种方式做我想做的事
  • 将 C++ 字符串发送到 C# 字符串。互操作性

    我是进程间通信的新手 需要一些帮助 我希望能够将字符串从 C 程序发送到 C 程序 我的问题是生成的字符串是乱码 这是我的代码 发送程序 C void transmitState char myStr HWND hWnd FindWindo
  • Python ctypes,C++ 对象销毁

    考虑以下 python ctypes c 绑定 C class A public void someFunc A A new return new A void A someFunc A obj obj gt someFunc void A
  • 如何使用 PHP 调整缩略图大小时提高图像质量?

    我在网上找到了这个脚本 它可以从图像中创建缩略图 但创建的缩略图质量很差 如何提高图像的质量 有没有更好的方法来创建缩略图 如果有的话 您能给我指点一下如何使用 PHP 创建缩略图的教程吗 这是下面的代码
  • 如何提取括号(圆括号)之间的文本?

    我有一根绳子User name sales 我想提取括号之间的文本 我该怎么做 我怀疑子字符串 但我无法弄清楚如何阅读 直到右括号 文本的长度会有所不同 如果您希望远离正则表达式 我能想到的最简单的方法是 string input User
  • 如何将数字格式化为货币字符串

    我想用 JavaScript 格式化价格 我想要一个需要一个函数float作为参数并返回string格式如下 2 500 00 我怎样才能做到这一点 国际数字格式 https developer mozilla org en US docs