1. 前言
- 之前写过一篇文章金额数组转换的 也有提到关于金钱的格式化
- 这篇文章在单独写下,金钱/金额的千分位 和反千分位展示
2. 千分位展示
/*
* 参数说明:
* number:要格式化的数字
* decimals:保留几位小数 ,传0 就不要小数位,是整数
* dec_point:小数点符号
* thousands_sep:千分位符号
* roundtag:舍入参数,默认 "ceil" 向上取,"floor"向下取,"round" 四舍五入
* */
const number_format = (
number = 0,
decimals = 2,
dec_point = ".",
thousands_sep = ",",
roundtag = "floor"
) =>{
number = ((number + "").replace(/[^0-9+-Ee.]/g, "") * 1).toFixed(2);
roundtag = roundtag || "ceil"; //"ceil","floor","round"
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
dec = typeof dec_point === "undefined" ? "." : dec_point,
s = "",
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
console.log();
return (
"" +
parseFloat(
Math[roundtag](parseFloat((n * k).toFixed(prec * 2))).toFixed(
prec * 2
)
) /
k
);
};
s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split(".");
var re = /(-?\d+)(\d{3})/;
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + sep + "$2");
}
if ((s[1] || "").length < prec) {
s[1] = s[1] || "";
s[1] += new Array(prec - s[1].length + 1).join("0");
}
return s.join(dec);
}
3. 千分位反格式化
/**
* @description: 千分位反格式化
* @param {*} s
* @return {*}
*/
const rmoney = (s)=> {
let str = "";
if (s) {
str = String(s).replace(/,/g, "");
}
if (s && (s + "").indexOf(".") > -1 && Number(str)) {
return String(s).replace(/[^\d\.-]/g, "");
} else if (s && Number(str)) {
return str;
} else {
return s;
}
}
参考资料
初心
我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落
的崛起;
共勉