小数运算不精准

eg:0.5 - 0.4 === 0.1 主观认为是对的,没毛病吧?但是计算机不这么认为

这里涉及到计算机里面对小数的存储精度问题。

计算机里面只能存储二进制。整数部分就不讨论了

看小数部分:10进制转2进制规则:乘2取整,顺序排列

eg:10进制的0.125转为2进制

0.125 * 2 = 0.5     取0

0.5 * 2   =  1.0      取1 

0.0 

所以最终变为2进制就是 0 1

eg:10进制的0.2 

0.2 * 2 = 0.4    取0

0.4 * 2 = 0.8    取0

0.8 * 2 = 1.6    取1

0.6 * 2 = 1.2    取1

0.2 * 2 = 0.4    取0

.。。。。。。

最终变为2进制就是 0011的循环

看出:0.2不是一个循环的小数,但是转换为2进制就是一个循环的二进制小数,这就是计算机里面对小数运算不精确的一个根源所在。存得都不精确,参与运算也就肯定不精确。

console.log(0.5-0.4==0.1); //false
console.log(0.5-0.4===0.1); //false
console.log(0.5-0.4); //0.09999999999999998

 总结:JS语言不适合科研计算,像需要很精确得计算,会出现误差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值