JavaScript数字精度丢失问题总结

JavaScript数字精度丢失问题总结


在这里小编给大家总结一下在计算数字时会遇到损失精度的问题以及如何解决这种情况,好了下面就是本篇的主要内容:

1、JS 数字精度丢失的一些典型问题
2、JS 数字精度丢失的原因
3、解决方案

一、JS数字精度丢失的问题

1、两个简单的浮点数相加
0.01 + 0.2 != 0.21 // true

在这里插入图片描述

2、大整数运算
9999999999999999 == 10000000000000001 // true

这里就不上图了,好奇的小伙伴自己尝试一下

二、JS 数字丢失精度的原因

计算机的二进制实现和位数限制有些数无法有限表示。就像一些无理数不能有限表示,如 圆周率 3.1415926…,1.3333… 等。JS 遵循 IEEE 754规范,采用双精度存储(double precision),占用 64 bit。

在这里插入图片描述

意义

1位用来表示符号位
11位用来表示指数
52位表示尾数

三、解决方案

对于整数,前端出现问题的几率可能比较低,毕竟很少有业务需要需要用到超大整数。

对于小数,前端出现问题的几率还是很多的,尤其在一些涉及到金额等数据的网站时。解决方式:把小数放到位整数(乘倍数),再缩小回原来倍数(除倍数),最简单直接。

//比如计算 0.1+0.2
(0.1*10 + 0.2*10) / 10 == 0.3 // true
这样就可以解决带小数计算而损失精度的问题了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值