为什么需要知道JavaScript的Number类型的精度问题

JavaScript的Number类型在我们平时写脚本的时候随处可见,但是因为前端对精度的要求不高,虽然不常见,但是有时也会碰到0.1+0.2!=0.3的情况,如果你不了解Number,可能就需要浪费很久事件去找bug。什么你没遇见过,不敢兴趣,了解下呗,防患于未然(虽然DUCK不必),面试会问到啊,看嘛,我讲快点(╥╯^╰╥)

Number类型

在js里,它是个双精度浮点数,用二进制来表示,就是个64位的数。其中呢,精度丢失就发生最后52位中。
在ES规范中规定e的范围在-1074 ~ 971
二进制的第一位有效数字必定是1,这个1不会被存储,可以节省一个存储位,因此尾数部分可以存储的范围是1 ~ 2(52+1)
在这里插入图片描述
要了解精度丢失问题?我们先了解下十进制转二进制

二进制与十进制的转换

二进制转十进制,就是一个个乘
二进制
101.1 101.1 101.1
十进制
1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 = 5.5 1\times2^2 + 0\times2^1 + 1\times2^0 + 1\times2^-1 =5.5

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值