ES6之数值类型(number)
来源:互联网 发布:女士皮鞋品牌 知乎 编辑:程序博客网 时间:2024/05/19 02:00
新特性:Number.isNaN函数
传统的isNaN函数会把非数值的参数转化成数值再进行判断,而Number.
isNaN只对数值类型有效,非数值类型的参数一律返回false。当返回false的时候,不一定就是一个数值,有可能是一个非数值类型的参数。
isNaN('abc');//结果:true //'abc'无法转为一个数值,返回true Number.isNaN('abc'); //结果:false //'abc'是字符串,Number.isNaN不做类型转换,直接返回false
新特性:Number.isFinite函数
Number.isFinite函数:用来检查一个数值是否非无穷。注意第二行代码的参数:Infinity,Infinity是window对象下的一个常量,表示一个无穷数。所以第二行代码会返回false。此外,isFinite函数跟isNaN函数一样,也只是对数值类型有效,对非数值类型的参数一律返回false。
Number.isFinite(1); //结果:true,数值1是有穷,即非无穷 Number.isFinite(Infinity); //结果:false,Infinity表示无穷大的特殊值 Number.isFinite('abc'); //结果:false
新特性:Number.parseInt函数
parseInt函数:解析一个字符串,返回一个整数。parseInt函数同样是从window对象下移植到Number对象下,但是它的作用没有任何变化。
//传统用法: parseInt('12.3abc'); //结果:返回数值12 //ES6用法: Number.parseInt('12.3abc'); //结果:返回数值12
新特性:Number.parseFloat函数
parseFloat函数:解析一个字符串,并返回一个浮点数。跟parseInt一样,被移植到Number对象下,作用保持不变。
//传统用法: parseInt('12.3abc'); //结果:返回数值12 //ES6用法: Number.parseInt('12.3abc'); //结果:返回数值12
以上4个函数都是在window对象下,移植到了Number对象下,这么做的目的是慢慢地减少全局性的函数,把全局函数合理地规划到其他对象下,渐渐实现语言的模块化。
新特性:Number.isInteger函数
Number.isInteger函数:用来判断是否是整数。
在javascript内部对整数和浮点数采用一样的存储方式,因此小数点后如果都是0的浮点数,都会被认为是整数。
数值3.0和3.00都会被认为是整数。
Number.isInteger(3.2); //结果:false Number.isInteger(3); //结果:true Number.isInteger(3.0); //结果:true Number.isInteger(3.00); //结果:true
极小常量
Number.EPSILON常量:定义一个极小的数值。
2.220446049250313e-16是一个极小的数值,约等于0.00000000000000022204。干嘛要定义一个这样的数值,在什么情况下会用它呢?Number.EPSILON的出现是用来判断浮点数的计算误差,如果浮点数计算得到的误差不超过Number.EPSILON的值,就表示可以接受这样的误差。
console.log(Number.EPSILON); //结果:2.220446049250313e-16
安全整数
ES6为我们引入了安全整数的概念。JavaScript能够准确表示的整数范围在-2^53到2^53之间,超过这个范围,无法精确表示这个值。故称之为不安全。
为此,ES6定义了两个常量来表示这个范围的最大值和最小值:Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER。此外,如果给你一个数值,你不知道它是否超出了这个安全范围,你可以使用ES6给我们新增的一个函数Number.isSafeInteger来进行判断。看例子:
Number.isSafeInteger(Number.MAX_SAFE_INTEGER); //结果:true Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1); //结果:false
我们用最大安全整数Number.MAX_SAFE_INTEGER来做试验,第一行代码的结果返回的值是true,也就表示Number.MAX_SAFE_INTEGER属于安全范围,第二行代码,我们对Number.MAX_SAFE_INTEGER进行了+1,相加后的数值超过安全范围,isSafeInteger函数就返回了false,表示不在安全范围内。
新特性:Math.trunc函数
Math.trunc函数:用于去除一个数的小数部分,返回整数部分。
Math.trunc(3); //结果:3 Math.trunc(3.1); //结果:3
新特性:Math.sign函数
Math.sign函数:用来判断一个数到底是正数、负数、还是零。
Math.sign(3); //结果:1 Math.sign(-3); //结果:-1 Math.sign(0); //结果:0 Math.sign('abc'); //结果:NaN
新特性:Math.cbrt函数
Math.cbrt函数:用于计算一个数的立方根。
Math.cbrt(8); //结果:2 Math.cbrt(27); //结果:3
除了这三个函数以外,剩下的新增函数都是一些高中时期的数学方法,只不过是ES6将他们的运算封装成一个方法,方便大家使用,也算是开发者的福音。
它们分别是:
Math.acosh(x) 返回 x 的反双曲余弦。
Math.asinh(x) 返回 x 的反双曲正弦。
Math.clz32(x) 返回 x 的 32 位二进制整数表示形式的前导 0的个数。
Math.sinh(x) 返回x的双曲正弦。
Math.cosh(x) 返回 x 的双曲余弦。
Math.expm1(x) 返回 eˆx - 1。
Math.fround(x) 返回 x 的单精度浮点数形式。
Math.hypot(…values)返回所有参数的平方和的平方根。
Math.imul(x, y) 返回两个参数以 32 位整数形式相乘的结果。
Math.log1p(x)返回 1 + x 的自然对数。
Math.log10(x) 返回以 10 为底的x的对数。
Math.log2(x) 返回以 2 为底的 x 的对数。
Math.tanh(x) 返回 x 的双曲正切。
这么多数学方法,估计很多人都会懵逼,根本记不住这么多,但是没关系,我们也不需要去死记硬背它们,我们只需要记住ES6为Math对象扩展了很多数学方法就可以了。等真正使用到的时候,我们再去查找资料就可以了。
- ES6之数值类型(number)
- 判断Number数值类型
- ES6-数值的扩展-Number.isFinite(), Number.isNaN()
- ES6-数值的扩展-Number.parseInt(), Number.parseFloat()
- ES6-数值的扩展-Number.isInteger() 和 Number.EPSILON
- ES6-数值的扩展-安全整数和 Number.isSafeInteger()
- ES6 学习笔记之《数值的扩展》
- 学习笔记:ES6之数值扩展
- oracle的数值类型number案例
- swift之数值类型杂谈(数值)
- ES6 Number
- oracle 数值类型都转换为number类型存储
- C#笔记之数值类型
- JavaScript对象之数值操作-Number
- es6学习之路(5):数值的扩展
- ES6学习——新的语法:数值字面量扩展(Number Literal Extensions)
- es6数值扩展
- 【es6】数值的扩展
- [福利]Lua 打印table代码
- 关于mui中标签点击事件绑定, 小范围点击才有效
- HTML基础 杂论2
- 2017年8月14日22:04:49
- Android Monkey测试入门-5-Monkey高级参数之seed
- ES6之数值类型(number)
- vector<string>
- Ubuntu 16.04 LTS提示“卷boot仅剩余0字节的硬盘空间”
- STM32写内部FLASH
- 前端开发中的字符编码 xss
- 如何在C++中调用C程序?
- 设计模式-模板方法模式
- 浅析C++中的this指针
- 230. Kth Smallest Element in a BST(Java)