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

本文解析了JavaScript中0.1+0.2不等于0.3的现象,深入探讨了IEEE754双精度标准下浮点数运算的精度缺失问题,并提供了放大计算后再四舍五入的解决方案。

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

首先要说的是,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('==')
]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值