js处理千分位分割
Posted 清颖~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js处理千分位分割相关的知识,希望对你有一定的参考价值。
问题:使用js进行千分位分割?
使用正则表达式解决。
参考第三方npm库 thousandify
的源码,梳理了一下,主要方法在thousandify中。
该方法的思想是:正则表达式。
1、正则判断输入内容是否为数字。
2、将输入内容以小数点“.”分开,分为整数位和小数位。
3、对于整数位,进行千分位划分。正则判断从末尾开始每三位数前面加逗号分隔符“,”。
4、对小数位,直接截取,默认截取2位。
5、再用小数点将整数位和小数位拼接起来。
到此完成。
"use strict";
let toString = Object.prototype.toString;
let charsetRegExp = /^[\\d\\.]+$/;
let defaultOption =
thousandSeparator: ",", // 千分位分隔符
decimalSeparator: ".", // 小数分隔符
decimalDigits: false, // 小数位数量, false表示不特殊处理
;
function isNumber(target)
return toString.call(target) === "[object Number]";
function thousandify(amount, option)
let parsedAmount = amount + "";
if (!charsetRegExp.test(parsedAmount))
return amount;
let options = Object.assign(, defaultOption, option),
decimalSeparator = options.decimalSeparator,// 小数位分隔符
thousandSeparator = options.thousandSeparator,// 千分位分隔符
decimalDigits = options.decimalDigits;// 小数位数
// 将小数部分与整数部分分隔开
let amountParts = parsedAmount.split(decimalSeparator);
// 整数部分,从末尾开始每三位数前面插入千分位
let intPartStr = amountParts[0].replace(/(?!^)(?=(\\d3)+$)/g, thousandSeparator);
// 小数部分
let decimalStr = amountParts[1] || "";
// 截取小数位数,不处理精度,仅截取
if (isNumber(decimalDigits))
decimalStr = decimalStr.substr(0, decimalDigits)
return !!decimalStr ? [intPartStr, decimalStr].join(decimalSeparator) : intPartStr;
console.log(thousandify(182918.928,decimalDigits: 2));
效果图:
注:这只是千分位分割,不处理精度(无四舍五入)。
以上是关于js处理千分位分割的主要内容,如果未能解决你的问题,请参考以下文章