数值

作者: 懂会悟 | 来源:发表于2020-09-27 10:39 被阅读0次

1、Number.isFinite(), Number.isNaN()

ES6 在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法。

  • Number.isFinint()用来检查一个数值是否为有限的,即不是Infinity
  • Number.isNaN()用来检查一个值是否为NaN
Number.isFinite(15) 
// true
Number.isFinite(0.8)
/// true
Number.isFinite(NaN) 
// false
Number.isFinite(Infinity) 
// false
Number.isFinite(-Infinity) 
// false
Number.isFinite('foo') 
// false
Number.isFinite('15') 
// false
Number.isFinite(true) 
// false

如果参数类型不是数值,Number.isFinite一律返回false

Number.isNaN(NaN) 
// true
Number.isNaN(15) 
// false
Number.isNaN('15') 
// false
Number.isNaN(true) 
// false
Number.isNaN(9/NaN) 
// true
Number.isNaN('true' / 0) 
// true
Number.isNaN('true' / 'true') 
// true

如果参数类型不是NaN,Number.isNaN一律返回false

Number.isFinite(),Number.isNaN()与传统全局方法isFinite(),isNaN()的区别:

传统方法先调用Number()将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,

Number.isFinite()对于非数值一律返回false, Number.isNaN()只有对于NaN才返回true,非NaN一律返回false

isFinite(25) 
// true
isFinite("25") 
// true
Number.isFinite(25) 
// true
Number.isFinite("25") 
// false

isNaN(NaN) 
// true
isNaN("NaN") 
// true
Number.isNaN(NaN) 
// true
Number.isNaN("NaN") 
// false
Number.isNaN(1) 
// false

2、Number.parseInt(), Number.parseFloat()

ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。>这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。

// ES5的写法
parseInt('12.34') 
// 12
parseFloat('123.45#') 
// 123.45

// ES6的写法
Number.parseInt('12.34') 
// 12
Number.parseFloat('123.45#') 
// 123.45
Number.parseInt === parseInt 
// true
Number.parseFloat === parseFloat 
// true

3、Number.isInteger()

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

Number.isInteger(25) 
// true
Number.isInteger(25.1) 
// false

如果参数不是数值,Number.isInteger返回false

Number.isInteger() 
// false
Number.isInteger(null) 
// false
Number.isInteger('15') 
// false
Number.isInteger(true) 
// false

4、Number.EPSILON

ES6 在Number对象上面,新增一个极小的常量Number.EPSILON。根据规格,它表示 1 与大于 1 的最小浮点数之间的差,引入一个这么小的量的目的,在于为浮点数计算,设置一个误差范围。我们知道浮点数计算是不精确的

Number.EPSILON
// 2.220446049250313e-16

5、安全整数和 Number.isSafeInteger()

JavaScript 能够准确表示的整数范围在-253到253之间(不含两个端点),超过这个范围,无法精确表示这个值。

ES6 引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。

Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。

Number.isSafeInteger('a') 
// false
Number.isSafeInteger(null) 
// false
Number.isSafeInteger(NaN) 
// false
Number.isSafeInteger(Infinity) 
// false
Number.isSafeInteger(-Infinity) 
// false

Number.isSafeInteger(3) 
// true
Number.isSafeInteger(1.2) 
// false
Number.isSafeInteger(9007199254740990) 
// true
Number.isSafeInteger(9007199254740992) 
// false

Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) 
// false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER) 
// true
Number.isSafeInteger(Number.MAX_SAFE_INTEGER) 
// true
Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) 
// false

6、Math 对象的扩展

Math.trunc方法用于去除一个数的小数部分,返回整数部分
Math.trunc(4.1) 
// 4
Math.trunc(4.9) 
// 4
Math.trunc(-4.1) 
//  -4 
Math.trunc(-4.9) 
// -4 
Math.trunc(-0.1234)
// 0 

对于非数值,Math.trunc内部使用Number方法将其先转为数值

Math.trunc('123.456') 
// 123
Math.trunc(true)
// 1
Math.trunc(false) 
// 0
Math.trunc(null) 
// 0

对于空值和无法截取整数的值,返回NaN

Math.trunc(NaN);     
// NaN
Math.trunc('foo');    
// NaN
Math.trunc();         
// NaN
Math.trunc(undefined) 
// NaN

Math.sign

Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值,它会返回五种值

  • 参数为正数,返回+1
  • 参数为负数,返回-1
  • 参数为 0,返回0
  • 参数为-0,返回-0
  • 其他值,返回NaN
Math.sign(-5) 
// -1 
Math.sign(5) 
// +1 
Math.sign(0) 
// +0 
Math.sign(-0) 
// -0 
Math.sign(NaN) 
// NaN

Math.sign('')  
// 0
Math.sign(true)  
// +1
Math.sign(false)  
// 0
Math.sign(null)  
// 0
Math.sign('9')  
// +1
Math.sign('foo') 
// NaN
Math.sign()  
// NaN
Math.sign(undefined)  
// NaN

Math.cbrt

Math.cbrt方法用于计算一个数的立方根

Math.cbrt(-1) 
// -1
Math.cbrt(0)  
// 0
Math.cbrt(1)  
// 1
Math.cbrt(2)  
// 1.2599210498948734

对于非数值,Math.cbrt方法内部也是先使用Number方法将其转为数值

Math.cbrt('8') 
// 2
Math.cbrt('hello') 
// NaN

相关文章

  • Excle常用函数

    常用加减乘除用法公式 =数值1+数值2=数值1-数值2=数值1*数值2=数值1/数值2 常用函数及用法 sum 求...

  • 数值分析:数值积分与数值微分

    1 数值积分概述 1.1 引言   对于许多实际问题的求解往往需要计算积分。在高等数学中计算积分采用的是著名的牛顿...

  • 数值单位和数值

    一、长度单位 1.1 绝对单位 absolute units 1.1.1 px pixel 像素是一个绝对单位,这...

  • 数值

    数值 // absolute 绝对值Math.abs(5);Math.abs(-5); // 5 // round...

  • 数值

    JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一...

  • 数值

    概述 整数和浮点数 JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1...

  • 数值

    163 整型3.14 浮点型2.5e11 科学计数法形式0xfa1b 16进制形式 运算 1 + 21 - 21 ...

  • 数值

    Math.roundMath.round(1.1) // => 1 Math.ceilMath.ceil(1.1...

  • 数值

    数值的表示二进制表示法新写法: 前缀 0b 或 0B 。 八进制表示法新写法: 前缀 0o 或 0O 。 常量Nu...

  • 非数值转化为数值

    有三个函数可以把非数值转化为数值 Number () parseInt () parseFloat () Numb...

网友评论

      本文标题:数值

      本文链接:https://www.haomeiwen.com/subject/azxosktx.html