js精度丢失解决办法_JS:表单输入,如何处理成金额类型?完全避免乱搞

进入我的主页,查看更多JS的分享!

我的代码有多短,本篇内容就有多短!

先实现标题的内容,贴出代码:

//格式化金额的输入function formatPrice(p) {  if (!p) {    return "0.0";  } else {    p += "";    //去除非数字,只保留数字和.    p = p.replace(/[^d.]/g, "");    //必须保证第一个为数字而不是.    p = p.replace(/^./g, "0.");    // 保留第一个.    p = p.replace(".", "$#$").replace(/./g, "").replace("$#$", ".");    // 保留第一个.    // p = p.replace(/.{2,}/g, ".");    //只取一位小数 不进位,{1}表示保留1位小数    p = p.replace(/^(-)*(d+).(d{1}).*$/, "$1$2.$3");    // 返回时 处理0199、0.这种情况    return parseFloat(p);  }}

测试效果:

console.log(formatPrice("哈哈10.嘿嘿5.99.589"));//输出:10.5console.log(formatPrice("哈哈.嘿嘿5.99.589"));//输出:0.5

补充:

//只保留一位小数,{0,2}表示保留两位p = Number(p.toString().match(/^d+(?:.d{0,1})?/));//保留一位小数,且小数位四舍五入p = parseFloat(p).toFixed(1);

如果你用了其它方法来实现,其中不建议进行乘法除法的运算,因为js的加减乘除,在带小数时可能会丢失精度(虽然有解决办法,但放在这里就麻烦了)。

然后就没有然后了,欢迎补充。

8d2e636cbd91bfcbab62c691d9a0ba50.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值