您现在的位置是:首页 > Javascript
当前栏目
JavaScript如何对数字进行千分位货币格式化
2023-02-18 16:29:48 时间
在以前,我一直都是利用正则表达式进行手动插入千分位,比如,写了个这样的方法(注释比较详细):
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
示例:
(12345.564).toLocaleString('zh-CN', {style: 'currency', currency: 'CNY'})
// 执行结果"¥12,345.56"
(12345.568).toLocaleString('zh-CN', {style: 'currency', currency: 'CNY'})
// 执行结果"¥12,345.57"
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息: 原文出处:Yiiven https://www.yiiven.cn/js-tolocalestring.html
相关文章
- 【重点】快速记忆JavaScript的数组api
- 实习生妹子问我怎么对接微信支付(H5、JSAPI、小程序)
- nodejs初识
- js模板引擎laytpl的使用
- Node中导入模块require和import??
- vuejs 入门
- Node.js用fs.renameSync报cross-device link not permitted错
- Node入门
- 微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单
- js知识点
- reduxjs-toolkit 案例 — 登录
- ListNode算法
- js 大文件上传的思路
- 前端高薪必会的JavaScript重难点知识:防抖与节流详解
- 用javascript分类刷leetcode4.贪心(图文视频讲解)
- JavaScript刷LeetCode拿offer-js版字典
- js二叉树层序遍历
- JavaScript:this是什么?
- JS IOS/iPhone的Safari不兼容Javascript中的Date()问题
- PHP中把数据库查询结果输出为json格式