Javascript 将货币价值格式化为英镑和便士
我有一个助手函数,将我的货币值格式化为英镑和便士:Javascript 将货币价值格式化为英镑和便士,javascript,Javascript,我有一个助手函数,将我的货币值格式化为英镑和便士: formatMoney: function(10496.470000000001){ return value.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "1,"); }, 给我: 11496.471001 有没有一种方法可以把它精确地格式化成英镑和便士?所以它写着,11496.471pRegexp不关心您传入的小数。您需要将输入转换为已有2位小数: return value.toFi
formatMoney: function(10496.470000000001){
return value.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "1,");
},
给我:
11496.471001
有没有一种方法可以把它精确地格式化成英镑和便士?所以它写着,
11496.471p
Regexp不关心您传入的小数。您需要将输入转换为已有2位小数:
return value.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "1,");
^^^^^^^^^^
函数转换(值){
返回值.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g,“1,”;
}
console.log(转换(10496.470000000001))代码>除了前面提到的toFixed方法调用之外,要替换的第二个参数应该是“$1”,而不是“1”。此外,您对数字的转换有些脆弱。以下是我试图解决这些问题的尝试:
函数转换(值){
返回“£”+((数字(值)| 0).toFixed(2).替换(/(\d)(?=(\d{3})+(?!\d))/g,“$1”)+“p”;
}
console.log(转换(10496.470000000001))代码>那么“001001”是什么?输入什么值?请参见您需要将添加到fixed(2)
为什么10496.470000000001
格式添加到11496.47
?还有,我没有投反对票,这就是你想要的,对吗?还是需要额外的1
?我不是OP,但我怀疑OP的脚本中也有错误。除非我遗漏了一些东西,而且他们确实想在货币显示中添加一千种格式。