JavaScript高级学习:ES6新特性04——数值的扩展操作

提示:
本文为JavaScript栏目:JavaScript高级系列——ES6新特性章节 第四章


前言

本文讲解ES6数值的扩展操作。


提示:以下是本篇文章正文内容,下面案例可供参考

数值的扩展操作

isNaN函数

ES5中的isNaN直接调用,他的操作会先把参数转换为数字再来进行判断

let number=15;
let number2="20";
let number3="abc"
console.log(isNaN(number));//false
console.log(isNaN(number2));//false
console.log(isNaN(number3));//true
let num=new Number("20");
console.log(typeof  num.toString());//20   字符串类型
console.log(typeof  num.valueOf());//20     数字

在ES6中的Number.isNaN(number),函数的参数只要不是NaN类型,结果一定是false。

console.log(Number.isNaN(number));  //false
console.log(Number.isNaN(number2));  //false
console.log(Number.isNaN(number3));  //false

字符串abc是string类型,他转换数值的时候会被转换为NaN这个值。

NaN本身属于数值类型,是一个具体的数值。

这是什么意思呢?举例说明

console.log(typeof NaN);//number

切记:NaN与任何数值参与计算解构都是NaN

console.log(Number.isNaN(NaN));  //true
console.log(Number.isNaN(NaN+9));  //true--NaN与任何数值参与计算解构都是NaN

console.log(Number.isNaN(9/0));     //禁止写法  false  违背除法算式规则

isFinite函数

isFinite函数用来判断一个数值是否是有限的值

ES5中使用
console.log(isFinite(15));      //true
console.log(Infinity);      //表示数值
console.log(isFinite(Infinity));    //false
console.log(isFinite("15"));    //true
console.log(isFinite("abc"));    //false
ES6中使用
console.log(Number.isFinite(15));       //true
console.log(Number.isFinite(Infinity)); //false
console.log(Number.isFinite("15"));     //false
console.log(Number.isFinite("abc"));    //false
总结

ES5中isNaN、isFinite和ES6中Number .isNaN、Number .isFinite的区别:

  • ES5中isNaN和isFinite对参数都会先执行数值转换的操作,再来进行比较。
  • ES6中Number.isNaN判断时,参数只要不是NaN结果就一定是false。
  • ES6中Number.isFinite判断是,参数只要不是数值结果就一定是false。

数值转换

parseInt:ES5的用法
console.log(parseInt(6.5));         //6
console.log(parseInt("6.5"));       //6
console.log(parseInt("6abc"));      //6
parseInt:ES6的用法
console.log(Number.parseInt(6.5));      //6
console.log(Number.parseInt("6.5"));    //6
console.log(Number.parseInt("6abc"));   //6

xparseInt和Number .panseInt除了写法上没有区别,ES6只是在Number内置函数中增加了这个方法的实现。ES6推荐使用该方案。

parseFloat同理也有Number.parseFloat的用法。

目的是为了减少全局方法。

isInteger函数

isInteger函数判断整数

console.log(Number.isInteger(6));       //true
console.log(Number.isInteger(6.0));     //true---6和6.0是等价的,JS中认为6.0是整数
console.log(Number.isInteger(6.1));     //false
console.log(Number.isInteger("6"));     //false---参数不为数值则转结果为false,参数不进行转换
console.log(Number.isInteger(NaN));     //false

trunc和floor函数

trunc和floor函数都是用于取整

console.log(Math.trunc(6.5));       //6
console.log(Math.floor(6.5));       //6
console.log(Math.trunc(-6.5));       //-6
console.log(Math.floor(-6.5));       //-7
console.log(Math.ceil(-6.5));       //-6

fLoor是向下取整,找的是距离参数最近的一个比他小的整数。

Number.EPSILON极小常量

表示 1 与大于 1 的最小浮点数之间的差.

Number.EPSILON实际上是 JavaScript 能够表示的最小精度。误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。

console.log(Number.EPSILON);        //2.220446049250313e-16

在JS中,浮点数的计算是不准确的,比如0.1+0.2的值竟然不是0.3。
Number.EPSILON可以用来设置“能够接受的误差范围”。比如,误差范围设为 2 的-50 次方(即Number.EPSILON * Math.pow(2, 2)),即如果两个浮点数的差小于这个值,我们就认为这两个浮点数相等。
Number.EPSILON的实质是一个可以接受的最小误差范围。

举例说明:

function withinErrorMargin(left, right) {
    return Math.abs(left - right) < Number.EPSILON * Math.pow(2, 2);
}

console.log(0.1 + 0.2 === 0.3);// false
console.log(withinErrorMargin(0.1 + 0.2, 0.3));// true
console.log(withinErrorMargin(3.14,3.1400000000000000000000005));// true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值