JS浮点数精度之0.0003*10000不等于3

博客讲述了在JavaScript中遇到的一个浮点数精度问题,即0.0003乘以10000不等于预期的3。问题源于JS浮点数存储的不精确性。作者在处理数据时直接进行了取整操作,导致第四位小数也变得不精确。解决方案是通过四舍五入来确保精度。
摘要由CSDN通过智能技术生成

JS浮点数精度之0.0003*10000不等于3

最近做了个控制DSP的上位机软件,采用electron+vue框架
上位机发送前会把数据*10000,DSP收到后会除10000。某天师兄反馈了一个Bug,软件中输入0.0003,按理说下位机应该收到3,结果老是收到2。
经过测试,发现这是javascript浮点数精度问题。在js中,小数的存储并不是精准的。输入如下代码

a=0.0003;
console.log(a*10000);
//会显示2.9999999999999996

而我在处理时直接使用parseInt()取整处理了,这在最初定方案的时候由于*10000再取整,实际上可以精确到小数后四位,所以直接取整忽略第五位是可行的,谁能想到被浮点数精度埋伏了一手,这下第四位都不精确了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值