Javascript中var num = 0.7 * 180 console.log(num)

首先要说的是,0.1+0.2不等于0.3

JS中采用的IEEE 754的双精度标准,计算机内部存储数据的编码的时候,0.1在计算机内部根本就不是精确的0.1,而是一个有舍入误差的0.1。当代码被编译或解释后,0.1已经被四舍五入成一个与之很接近的计算机内部数字,以至于计算还没开始,一个很小的舍入错误就已经产生了。这也就是 0.1 + 0.2 不等于0.3 的原因。

这个属于运算中精度缺失问题,通常这个时候,我做的时候会把数字放大100倍乃至更多,计算完整后再除以100,再根据规定进行四舍五入等。

原因:计算的时候是以二进制来计算的,有些十进制并不能用准确的二进制数表示。

还有典型的其他例子:

var num = 0.7 * 180
console.log(num) // 125.99999999999999

解决,可以参考这里。 

if(1000000000000000128 === 1000000000000000129){
    console.log('--') // 输出这个
}else[
    console.log('==')
]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值