灏天阁

Number 对象的内置属性

· Yin灏

最大的正数和安全整数

// 最大正数
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
// 最大安全整数
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
// 判断是否是安全范围内的整数值
let answer = Number.isSafeInteger(Number.MAX_SAFE_INTEGER);
console.log(answer); // true
// 超出了最大安全整数的范围
let answer1 = Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1);
console.log(answer1); // false

最小的正数和安全整数

// 最小正数
console.log(Number.MIN_VALUE); //  5e-324
// 最小安全整数
console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
// 判断是否是安全范围内的整数值
let answer = Number.isSafeInteger(Number.MIN_SAFE_INTEGER);
console.log(answer); // true
// 超出了最小安全整数的范围
let answer1 = Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1);
console.log(answer1); // false

正负无穷值

// 负无穷
console.log(Number.NEGATIVE_INFINITY); // -Infinity
console.log(-Number.NEGATIVE_INFINITY); // Infinity
// 正无穷
console.log(Number.POSITIVE_INFINITY); // Infinity
console.log(-Number.POSITIVE_INFINITY); // -Infinity

非数值的判断

函数 isNaN()Number.isNaN() 都可以判断。

  • isNaN():会将传入的参数转化为数值,如果可以转化,说明是数值,返回 false
  • Number.isNaN() :不会进行传入数值的转换工作,任何数据类型不是数值的数据都会被忽略。
let answer;

console.log(NaN); // NaN
console.log(typeof NaN); // 'number'

answer = Number.isNaN(NaN);
console.log(answer); // true

console.log('')

console.log(isNaN(undefined)); // true
console.log(Number.isNaN(undefined)); // false
console.log('');

console.log(isNaN(false)); // false
console.log(Number.isNaN(false)); // false
console.log('');

console.log(isNaN(null)); // false
console.log(Number.isNaN(null)); // false
console.log('');

console.log(isNaN('25.37')); // false
console.log(Number.isNaN('25.37')); // false
console.log('');

console.log(isNaN('32one')); // true
console.log(Number.isNaN('32one')); // false
console.log('');

console.log(isNaN('hello')); // true
console.log(Number.isNaN('hello')); // false
console.log('');

console.log(isNaN('')); // false
console.log(Number.isNaN('')); // false
console.log('');

console.log(isNaN(' ')); // false
console.log(Number.isNaN(' ')); // false
console.log('');

console.log(isNaN(new Date())); // false
console.log(Number.isNaN(new Date())); // false
console.log('');

浮点数运算的误差值

在现代计算机里,进行浮点数的运算,均会产生微小的误差值。在 js 中,任何浮点数的误差值都不会大于 Number.EPSOLON

let a = 0.33, b = 0.47, c = 0.8;

console.log(a + b == c); // true
console.log(c - a == b); // false
console.log(c - b == a); // false

console.log('')

console.log(c - a); // 0.47000000000000003
console.log(c - b); // 0.33000000000000007

// 误差小于 Number.EPSILON,表示两数相等
console.log(Number.EPSILON); // 2.220446049250313e-16

console.log(c - a - b < Number.EPSILON); // true

console.log(c - b - a < Number.EPSILON); // true

- Book Lists -