Javascript 如何使此数字逗号格式函数与4精度十进制一起工作?

Javascript 如何使此数字逗号格式函数与4精度十进制一起工作?,javascript,replace,precision,Javascript,Replace,Precision,我目前正在使用以下函数,该函数用逗号格式化数字: numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } 例如,上面的函数将20000格式化为20000。但是,上面的函数似乎不适用于具有4精度小数的数字。例如,20000.0000返回为20000.0000。如何更新上面的numberWithCommas函数,以便在上面的第二个场景中正确插入逗号?此代码似乎按预期工作: numberWi

我目前正在使用以下函数,该函数用逗号格式化数字:

numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }

例如,上面的函数将20000格式化为20000。但是,上面的函数似乎不适用于具有4精度小数的数字。例如,20000.0000返回为20000.0000。如何更新上面的numberWithCommas函数,以便在上面的第二个场景中正确插入逗号?

此代码似乎按预期工作:

numberWithCommas = (x) => { const splitUp =  x.toString().split('.') ;return [splitUp.shift().replace(/\B(?=(\d{3})+(?!\d))/g, ","), ...splitUp].join('.'); }

这应该可以解决问题。你的正则表达式没有考虑小数。另外,
toString()
正在删除小数:

const regex=/(?=(?=\d*\)(\d{3})+(?!\d))/g;
常量str=`10000000.0000`;
常量subst=`,`;
const result=str.replace(regex,subst);

log('替换结果:',结果)
将正则表达式更改为
/\B(?=(\d{3})+(?!\d.)/g
似乎可以解决您的问题。

在结尾处用量词(
\.+
)逃出一个句点,但在括号内,使正则表达式看起来像:
/\B(?=(?!\)(\d{3}+(?!\d)+)/g

document.write(200000.12345.toString().replace(/\B(?=(!\)(\d{3})+(?!\d)\.+)/g,“,”)注意:只有在有小数时,才会添加逗号。