你不知道的 JavaScript 系列中( 9 ) - 安全整数

数字的呈现方式决定了 “整数” 的安全值范围远远小于 Number.MAX_VALUE(1.798e+308)。

 

能够被安全呈现的最大整数是:
2^53 - 1,即 9007199254740991,在 ES6 中被定义为 Number.MAX_SAFE_INTEGER
最小整数 -9007199254740991,在 ES6 中被定义 Number.MIN_SAVE_INTEGER

 

检测一个值是否是整数,可以用 ES6 的 Number.isInteger() 方法:
Number.isInteger(42); // true
Number.isInteger(42.00); // true
Number.isInteger(42.3); // false

ES6 之前的版本 polyfill

if(!Number.isInteger) {
  Number.isInteger = function(num) {
    return typeof num == 'number' && num%1 == 0
  }
}

 

检测一个值是否是安全整数,可以使用 ES6 中的 Number.isSafeInteger() 方法:
Number.isSafeInteger(Number.MAX_SAFE_INTEGER); // true
Number.isSafeInteger( Math.pow(2,53) ); // false
Number.isSafeInteger( Math.pow(2,53)-1 ); // true

ES6 之前的版本 polyfill

if(!Number.isSafeInteger) {
  Number.isSafeInteger = function(num) {
    return Number.isInteger(num) && Math.abs( num ) <= Number.MAX_SAFE_INTEGER;
  }
}

 

posted @ 2020-05-12 06:36  wzndkj  阅读(372)  评论(0编辑  收藏  举报