关于js中 字符串类型的数字 转换成标准格式的货币类型

关于js中 字符串类型的数字 转换成标准格式的货币类型

问题描述:



let obj = {
              aa: "1218.74",
              bb: "10000001.23",
              cc: "60000000001",
              dd: "12223330000001",
            }


转换成


let obj = {
              aa: "1,218.74",
              bb: "10,000,001.23",
              cc: "60,000,000,001.00",
              dd: "12,223,330,000,001.00",
            }

注意区分逗号跟小数点 原本的数据有 带有小数点后面两位的 也有不带有的 现在想把他们统一转换成带有的 并且在小数点前面每隔3个数字加一个逗号 好像是用的toLocaleString() 但是这个方法只能对数字类型转换 可是我用pareint将字符串转换成数字之后 1218.74就变成了1218 帮帮忙呀


replace(/(\d)(?=(\d{3})+\.)/g, "$1,")

let num = 5262456.2158;
num = toMoney(num);
console.log(num);//打印结果 5,262,456.22

//将数字转换成金额显示
function toMoney(num){
num = num.toFixed(2);
num = parseFloat(num)
num = num.toLocaleString();
return num;
}

Object.entries({
aa: "1218.74",
bb: "10000001.23",
cc: "60000000001",
dd: "12223330000001",
}).reduce((p, [key, val]) => ({ ...p, [key]: val.replace(/(?<=\d{1,2})(?=(\d{3})+(?:.\d+)?$)/g, ',') }), {})

img