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