JS中使用Math.round(x)来替代toFixed()四舍五入保留1位小数点精度不准确的解决方法 分手后的思念是犯贱 2023-02-23 05:09 5阅读 0赞 ## JS中使用Math.round(x)来替代toFixed()四舍五入保留1位小数点精度不准确的解决方法 ## 客户下单时,单价和数量存在两位小数,但总价需要保留一位小数,且需要四舍五入,最先开始在小程序页面的js中使用toFixed(1)函数保留一位小数并四舍五入,经测试没问题,能够正常使用。 但在实际生产环境中,订单量增多的情况下总价会出现很多种比如1.65,22.85等小数点第二位是5的情况下就会发现保留1位小数后并没有四舍五入,得到的值是1.6和22.8,究其原因还是怪自己测试的时候数据量不够全面。 发现问题总是要解决的,查找了很多关于四舍五入的资料发现这方面好像很少有人遇到过这个问题,后来自己改了代码,决定不用toFixed()函数来进行四舍五入保留一位小数了。使用Math.round(x)来进行数值转换。 Math.round(x)中round() 方法可把一个数字舍入为最接近的整数。比如2.5 将舍入为 3,而 -2.5 将舍入为 -2。 那么保留一位小数的情况下我们该如何使用?如下所示: var f = Math.round(totalPrice * 10) / 10 先将所得的总价先乘以10,然后使用Math.round()函数取最接近的整数后,再除以10就可以得到正确的值了。如1.65\*10=16.5,取整后为17,再除以10就得到了1.7,保留1位小数又能够四舍五入了,同理保留两位小数也一样先乘以100取整后再除以100就行了。
还没有评论,来说两句吧...