• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    JavaScript实现给浮点数添加千分位逗号的多种方法

    发布者: 涵韵 | 发布时间: 2025-6-14 15:33| 查看数: 109| 评论数: 0|帖子模式

    一、问题背景

    在 Web 开发中,我们经常需要在界面上展示财务数据、统计数据或者其他大型数字。为了提升可读性,通常会在整数部分每三位添加一个逗号。例如:

      1. 1000
      复制代码
      1. 1,000
      复制代码
      1. 1000000
      复制代码
      1. 1,000,000
      复制代码
      1. 12345678.9
      复制代码
      1. 12,345,678.9
      复制代码
    JavaScript 并没有提供内置的方法直接实现这种格式化,因此我们需要使用正则表达式、
    1. toLocaleString()
    复制代码
    方法或手动实现格式化逻辑。

    二、使用 toLocaleString() 方法

    JavaScript 提供了
    1. toLocaleString()
    复制代码
    方法,可以直接将数字格式化为带有千分位分隔符的字符串。
    1. const num = 12000000.11;
    2. console.log(num.toLocaleString()); // "12,000,000.11"
    复制代码
    该方法默认使用用户所在地区的数字格式。例如,在美国地区,
    1. toLocaleString()
    复制代码
    会使用逗号作为千分位分隔符,而在部分欧洲地区可能会使用
    1. .
    复制代码
    作为分隔符。
    如果需要指定格式,可以传递
    1. locales
    复制代码
    参数,例如:
    1. console.log(num.toLocaleString('en-US')); // "12,000,000.11"
    2. console.log(num.toLocaleString('de-DE')); // "12.000.000,11"
    复制代码



    优点


    • 简洁易用,一行代码即可完成格式化。
    • 自动适配不同地区的格式。




    缺点


    • 无法完全自定义格式,例如指定小数位数。
    • 依赖浏览器环境,部分低版本浏览器可能不支持。

    三、使用正则表达式实现千分位格式化

    如果需要更灵活的控制,可以使用正则表达式手动实现千分位格式化。
    1. function formatNumber(num) {
    2.   const [integer, decimal] = num.toString().split('.');
    3.   return integer.replace(/\B(?=(\d{3})+(?!\d))/g, ',') + (decimal ? '.' + decimal : '');
    4. }

    5. console.log(formatNumber(12000000.11)); // "12,000,000.11"
    复制代码
    正则表达式解析
    1. /\B(?=(\d{3})+(?!\d))/g
    复制代码



        1. \B
        复制代码
        :匹配非单词边界,确保不会影响开头的数字。
        1. (?=(\d{3})+(?!\d))
        复制代码
        :匹配位置,使得每三位数字前加上逗号。

    优点


    • 代码量小,性能较高。
    • 适用于所有 JavaScript 运行环境。
    缺点


    • 需要对正则表达式有一定的理解。
    • 无法自动适配不同地区的格式。

    四、使用 Intl.NumberFormat 进行格式化

    JavaScript 提供了
    1. Intl.NumberFormat
    复制代码
    API,可以用于更加灵活的数值格式化。
    1. const formatter = new Intl.NumberFormat('en-US', {
    2.   minimumFractionDigits: 2,
    3.   maximumFractionDigits: 2
    4. });

    5. console.log(formatter.format(12000000.11)); // "12,000,000.11"
    复制代码
    优点


    • 提供更强的格式化控制,如小数位数等。
    • 支持国际化。
    缺点


    • 需要创建
      1. Intl.NumberFormat
      复制代码
      实例。
    • 可能不支持所有浏览器(低版本浏览器需要 polyfill)。

    五、手动实现格式化函数

    如果想要完全掌控格式化过程,可以使用纯 JavaScript 手动实现:
    1. function formatNumberManual(num) {
    2.   let [integer, decimal] = num.toString().split('.');
    3.   let result = '';
    4.   let count = 0;

    5.   for (let i = integer.length - 1; i >= 0; i--) {
    6.     count++;
    7.     result = integer[i] + result;
    8.     if (count % 3 === 0 && i !== 0) {
    9.       result = ',' + result;
    10.     }
    11.   }

    12.   return decimal ? result + '.' + decimal : result;
    13. }

    14. console.log(formatNumberManual(12000000.11)); // "12,000,000.11"
    复制代码
    代码解析


    • 将数字转换为字符串,并拆分整数和小数部分。
    • 通过遍历整数部分,每三位插入一个逗号。
    • 重新组合整数和小数部分。
    优点


    • 适用于所有 JavaScript 运行环境。
    • 代码完全可控,可自由调整格式。
    缺点


    • 代码较长,需要手动处理每个细节。

    六、性能对比

    不同方法的性能有所不同,通常情况下:
    方法可读性性能兼容性
    1. toLocaleString()
    复制代码
    高一般依赖浏览器正则表达式一般高兼容性好
    1. Intl.NumberFormat
    复制代码
    高高依赖浏览器手动实现低最高兼容性好
    七、总结

    JavaScript 提供了多种方式来格式化数字并添加千分位逗号,每种方法都有其适用场景:

      1. toLocaleString()
      复制代码
      适合简单场景,且能自动适配不同地区格式。
    • 正则表达式方法适合大部分场景,代码简洁且性能较高。
      1. Intl.NumberFormat
      复制代码
      提供更强的格式化能力,适合国际化应用。
    • 手动实现方法适用于所有环境,适合对格式有特殊需求的场景。
    以上就是JavaScript实现给浮点数添加千分位逗号的多种方法的详细内容,更多关于JavaScript浮点数添加千分位逗号的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/javascript/340017ois.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表