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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM