18.数值扩展

 

数值扩展

(1) Number.EPSILON

Number.EPSILON 是 JavaScript 表示的最小精度

EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16

1
2
3
4
5
6
7
8
9
10
11
12
13
// 1. Number.EPSILON 是 JavaScript 表示的最小精度
// EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16
console.log(0.1 + 0.2); // 结果 = 0.30000000000000004,不等于 0.3,因为浮点运算会有误差
console.log(0.1 + 0.2 === 0.3); // false
// 定义一个判断数字是否相等的函数
function equal(a, b){
if(Math.abs(a - b) < Number.EPSILON){
return true;
}else{
return false;
}
}
console.log(equal(0.1 + 0.2, 0.3)); // true

(2) 数字进制

ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b0o 表示

1
2
3
4
5
6
7
8
9
// 2. 数字进制
// 二进制
let b = 0b1010; // 10
// 八进制
let o = 0o777; // 511
// 十进制
let d = 100; // 100
// 十六进制
let x = 0xff; // 255

(3) Number.isFinite()

Number.isFinite() 用来检查一个数值是否为有限的

1
2
3
4
5
6
7
// 3. Number.isFinite  检测一个数值是否为有限数
console.log(Number.isFinite(100)); // true
console.log(Number.isFinite(100/0)); // false
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(1/3)); // true
console.log(Number.isFinite(0.3)); // true
console.log(Number.isFinite(0.1 + 0.2)); // true

(4) Number.isNaN()

Number.isNaN() 用来检查一个值是否为 NaN

Number.isNaN('abc') 返回 falseisNaN('abc') 返回 true,其他情况下 Number.isNaN()isNaN() 相同

1
2
3
4
5
6
// 4. Number.isNaN 检测一个数值是否为 NaN 
console.log(Number.isNaN(123)); // false
console.log(Number.isNaN('123')); // false
console.log(Number.isNaN('abc')); // false
console.log(Number.isNaN(3/'b')); // true
console.log(Number.isNaN(Number.parseInt('abc'))); // true

(5) Number.parseInt() 和 Number.parseFloat()

ES6 将全局方法 parseInt 和 parseFloat,移植到 Number 对象上面,使用不变

Number.parseInt()parseInt() 结果相同

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 5. Number.parseInt Number.parseFloat字符串转整数,
console.log(Number.parseInt('100')); // 100
console.log(Number.parseFloat('3.14')); // 3.14
console.log(Number.parseInt('abc')); // NaN
console.log(Number.parseFloat('abc')); // NaN
console.log(Number.parseInt('120letter')); // 120
console.log(Number.parseFloat('1.414character')); // 1.414
console.log(Number.parseInt('letter120')); // NaN
console.log(Number.parseFloat('character1.414')); // NaN
console.log(Number.parseInt('10abc20')); // 10
console.log(Number.parseFloat('1.23abc456')); // 1.23
console.log(Number.parseInt('num120abc')); // NaN
console.log(Number.parseFloat('char1.414abc')); // NaN
console.log(Number.parseInt('')); // NaN
console.log(Number.parseFloat('')); // NaN

(6) Number.isInteger()

Number.isInteger() 用来判断一个数值是否为整数

1
2
3
4
5
6
7
// 6. Number.isInteger 判断一个数是否为整数
console.log(Number.isInteger(5)); // true
console.log(Number.isInteger(2.5)); // false
console.log(Number.isInteger('5')); // false
console.log(Number.isInteger('2.5')); // false
console.log(Number.isInteger('abc')); // false
console.log(Number.isInteger('2.5abc')); // false

(7) Math.trunc()

Math.trunc() 用于去除一个数的小数部分,返回整数部分

1
2
3
4
5
// 7. Math.trunc 将数字的小数部分抹掉  
console.log(Math.trunc(3.5)); // 3
console.log(Math.trunc('3.5')); // 3
console.log(Math.trunc('abc')); // NaN
console.log(Math.trunc('2.5abc')); // NaN

(8) Math.sign()

Math.sign() 判断一个数到底为正数 负数 还是零

1
2
3
4
5
6
7
8
9
10
// 8. Math.sign 判断一个数到底为正数 负数 还是零
console.log(Math.sign(100)); // 1
console.log(Math.sign(0)); // 0
console.log(Math.sign(-20000)); // -1
console.log(Math.sign('100')); // 1
console.log(Math.sign('0')); // 0
console.log(Math.sign('-20000')); // -1
console.log(Math.sign('a100')); // NaN
console.log(Math.sign('0b')); // NaN
console.log(Math.sign('a-20000b')); // NaN