• 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

  • 相关阅读:
    html_Dom
    html_javascript
    html_之css
    协程
    进程和线程的总结
    html_基础标签
    html_头部<meta>设置
    Python_queue单项队列
    Python_paramiko模块
    Python_多进程multiprocessing
  • 原文地址:https://www.cnblogs.com/xhliang/p/12955727.html
Copyright © 2020-2023  润新知