前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript如何对数字进行千分位货币格式化

JavaScript如何对数字进行千分位货币格式化

作者头像
Yiiven
发布2022-12-15 13:45:52
2.4K0
发布2022-12-15 13:45:52
举报
文章被收录于专栏:怡文菌

在以前,我一直都是利用正则表达式进行手动插入千分位,比如,写了个这样的方法(注释比较详细):

代码语言:javascript
复制
function format_number_thousandth(number){
    number = number.toString();// 强制转换为字符串
    reg = /^[\-\+]?((\d+)([\.,](\d{3}))*([\.](\d+))?|([\.,](\d+))?)$/;// 正则
    dh = ",";// 千分符
    dh_reg = new RegExp(dh);
    while (dh_reg.test(number)) {
        number = number.replace(dh_reg, "");// 检测是否包含千分符,如果有,先去除
    }
    if (!reg.test(number)) {
        console.log("您输入的可能不是数字");
        return number;// 如果传值不是数字,则原样返回
    }
    number = number.replace(/^(\d*)$/, "$1.");// 整数加上小数点
    number = (number + "00").replace(/(\d+)(\.\d\d)\d+/, "$1$2");//
    number = number.replace(".", dh);// 将小数点替换为千分符
    //var re = /(\d)(\d{3},)/;
    var reg_insert = new RegExp("(\\d)(\\d{3}" + dh + ")");// 从小数点(已替换为千分符)前,每三位数插入一个千分符
    while (reg_insert.test(number)) {
        number = number.replace(reg_insert, "$1" + dh + "$2");// 循环插入千分符
    }
    var pointIndex = number.lastIndexOf(dh);// 找到小数点的坐标
    var int = number.substr(0, pointIndex);// 整数部分
    var float = number.substr(pointIndex).replace(dh_reg, ".");// 小数部分,并还原小数点为"."
    number = int + float;
    return number;
}

直到最近,才发现有这么一个方法,一句代码即可实现,她就是Number.prototype.toLocaleString(),她不仅可以插入千分位,还可以格式化为货币格式,并可以根据设定参数格式化出不同国别的货币格式,而且会自动的采用四舍五入法保留两位小数,是不是很方便呢,下面我们来看看应该怎么来使用她吧。

语法:numObj.toLocaleString([locales , options])

参数:

  • locales:可选,语言代码,例如:中国的代码zh-CN
  • options:可选. 这是个比较庞大的体系,这里就简单说说我们可能会用到的
    • style – 格式化时使用的样式.可选值有“decimal” – 纯数字格式 , “currency” – 货币格式, “percent” – 百分比格式; 默认值 “decimal”
    • currency – 在货币格式化中使用的货币符号. 可能的值是ISO的货币代码,如:人民币 – CNY
    • useGrouping – 是否使用分组分隔符,如千/万/亿分隔符,可选值true – 使用,false – 不使用,默认值”true”
    • minimumFractionDigits – 要保留的小数最小位数,可选值0-20,默认值”2″
    • maximumFractionDigits – 要保留的小数最大位数,可选值0-20,默认值minimumFractionDigits

示例:

代码语言:javascript
复制
(12345.564).toLocaleString('zh-CN', {style: 'currency', currency: 'CNY'})
// 执行结果"¥12,345.56"
(12345.568).toLocaleString('zh-CN', {style: 'currency', currency: 'CNY'})
// 执行结果"¥12,345.57"

更详细的用法,可以参考https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:

原文出处:Yiiven https://cloud.tencent.com/developer/article/2193127

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档