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的脚本中也有错误。除非我遗漏了一些东西,而且他们确实想在货币显示中添加一千种格式。