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,“,”)代码>注意:只有在有小数时,才会添加逗号。