js笔记(一)浮点数

JavaScript使用64位浮点数存储所有数字,包括整数,导致运算可能因精度问题出现偏差。例如,0.1+0.2不等于0.3。解决办法是将小数乘以10的倍数转换为整数运算。

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

浮点数的坑

  • JavaScript中,数字都是以64位浮点数存储,包括整数,由于浮点数不是精确的数,某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算,所以运算可能会出现偏差
    console.log(0.1+0.1===0.2);             //true
    console.log(0.1+0.2===0.3);             //false
    console.log(0.1+0.3===0.4);             //true
    console.log(0.1+0.4===0.5);             //true
    console.log(0.1+0.5===0.6);             //true
    console.log(0.1+0.6===0.7);             //true
    console.log(0.1+0.7===0.8);             //false
    console.log(0.1+0.8===0.9);             //true
    console.log(0.1+0.9===1.0);             //true
    console.log(1.0/0.1);                    //  10
    console.log(0.9/0.1);                    //  9
    console.log(0.8/0.1);                    //  8
    console.log(0.7/0.1);                    //  6.999999999999999
    console.log(0.6/0.1);                    //  5.999999999999999
    console.log(0.5/0.1);                    //  5
    console.log(0.4/0.1);                    //  4
    console.log(0.3/0.1);                    //  2.9999999999999996
    console.log(0.2/0.1);                    //  2
    console.log(0.1/0.1);                    //  1

总结

  • 其他算法就不做介绍,至于详细解释,有兴趣可以网上搜索,遇到这种问题最简单的方法就是乘以10的倍数变成整数,避开小数
  console.log((0.3*10)/(0.1*10));           //3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值