• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

凉梁凉糕

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

js 的Number类型数据对超范围的整数会自动四舍五入

在开发过程中,经常会遇到当number位数达到一定时就会对数据进行四舍五入,但是还不是全部数据都会存在有这种规律,原因是

JS 提供Number.MAX_SAFE_INTEGER常量来表示 最大安全整数,Number.MIN_SAFE_INTEGER常量表示最小安全整数:

Number.MAX_SAFE_INTEGER : 9007199254740991
Number.MIN_SAFE_INTEGER : -9007199254740991

确切地说,JS 中的Number类型只能安全地表示-9007199254740991 (-(2^53-1)) 和9007199254740991(2^53-1)之间的整数,任何超出此范围的整数值都可能失去精度。

解决方案:

方案一:利用string代替number;

方案二:使用BigInt类型,是js为了支持范围粳稻的整数值二引入的类型,对整数的溢出将不再是问题。

如何使用BigInt:

未引入BigInt,会四舍五入,
  var t = 9999999999999999
  console.log(t) //10000000000000000

引入BigInt
  方式一:直接在整数的末尾加上n
    var kk = 9999999999999999n
    console.lob(kk)  //9999999999999999n

  方式二:使用BigInt构造函数
    var k = BigInt("9999999999999999")
    console.log(k) //9999999999999999n

注意:BigInt 存在兼容性问题;在IE和Safari和Safari oniOS 下是完全不支持的;

更多详细的BigInt的用法如运算 、进制等请参见:

参考文章:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt

                  https://segmentfault.com/a/1190000019912017

 

posted on 2020-05-25 11:02  凉梁凉糕  阅读(1984)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3