js解决加减乘除运算精度问题。

本文探讨了JavaScript中浮点数运算遇到的0.00000000001误差问题,介绍了两种临时解决方案:方法一是通过`toFixed`四舍六入并转换为小数类型,方法二是利用`Math.round`进行自定义精度控制。同时,对比了`toFixed`与`round`的差异,并提供了适用场景和实例。

网上有许多精确运算的案例,但是在实操过程中js加减出现0.00000000001和1.9999999999仍旧是个问题。现有临时解决方案(非金额计算时候可用)

方法1

let sum = 3.141592600000001
sum  = (parseFloat(sum.toFixed(6)))

原理:取6位小数(平时够你用了)然后转换为小数类型
输出结果:
3.141593

方法2

Math.round(X * 100) / 100

原理:取6位小数(平时够你用了)然后转换为小数类型
输出结果:
3.14

注意:

tofixed()和round()的区别:

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

例如将数据Num保留2位小数,则表示为:toFixed(Num);但是其四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则
银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。具体规则如下:

简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。

显然这种规则不符合我们平常在数据中处理的方式。为了解决这样的问题,可以自定义去使用Math.round方法进行自定义式 的实现指定保留多少位数据进行处理。

round() 方法可把一个数字舍入为最接近的整数。

例如:Math.round(x),则是将x取其最接近的整数。其取舍的方法使用的是四舍五入中的方法,符合数学中取舍的规则。对于小数的处理没有那么便捷,但是可以根据不同的要求,进行自定义的处理。

例如:对于X进行保留两位小数的处理,则可以使用Math.round(X * 100) / 100.进行处理。

https://www.cnblogs.com/qinblog/p/10335676.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值