关于JS中数据运算时的精度损失问题

在JavaScript中遇到0.1+0.2不等于0.3的问题,这其实是浮点数运算精度导致的。解决方法是在比较时使用Number(value).toFixed(3)进行转换确保精度。本文总结了浮点数运算的常见问题,并提供了满足特定需求的校验方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前只知道在js中0.1+0.2 !==0.3,但最近做项目时遇到了这样的需求,上一个数据与下一数据要连续,要满足不同行之间的数据只差只能是0.1,当我写好了,按lastNum-currentNum = 0.1来判断时,发现判断是不对,最后发现这类问题其实浮点数运算的问题。这时才发现我需要总结一下。

上述需求是这样解决的
Number((Number(value) - Number(before)).toFixed(3)) <0.1 ,因为value与before可能是字符串,toFixed处理后也是字符串,所以都用Number做了个显示转换。当满足上述关系式,就代表通过校验

关于详细的浮点数问题可以参看文档
JavaScript 浮点数运算的精度问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值