ES6快速入门第六章------数值的扩展(可私信解惑)

  • 二进制和八进制表示法

ES6提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示,第一个字符是数字零。

// 十进制456转换为二进制111001000 ,二进制使用0b开头
0b111001000 === 456    // true   
 //  十进制456转换为二进制710,八进制使用0o开头
0o710 === 456     // true   

 

如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。

Number('0b110')      // 6    二进制
Number('0o11')      // 9    八进制

 

  • Number对象(1)

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

这两个新方法只对数值有效,非数值一律返回false

Number.isFinite()

用来检查一个数值是否为有限的(finite)。有限返回值为true,不是有限的返回false。

Number.isFinite(0.545877);     // true
Number.isFinite('aaaa');     // false    非数值返回false
Number.isFinite(NaN);     // false
Number.isFinite(Infinity);     // false   Infinity 属性用于存放表示正无穷大的数值。

Number.isNaN()

用来检查一个值是否为NaN。是NaN返回值为true,不是NaN返回值为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

Number.isInteger()

用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值。

 

Number.isInteger(10)     // true
Number.isInteger(10.0)     // true
Number.isInteger(10.1)     // false
Number.isInteger("10")     // false
Number.isInteger(true)     // false 
  • Number对象(2)

Number.parseInt(), Number.parseFloat()方法

ES6将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。

parseInt()函数可解析一个字符串,并返回一个整数。parseFloat() 函数可解析一个字符串,并返回一个浮点数。

// ES5的写法
parseInt('12.34')     // 12
parseFloat('12.34#')     // 12.34
// ES6的写法
Number.parseInt('12.34')     // 12
Number.parseFloat('12.34abcd这里是字符串')     // 12.34

Number.EPSILON 常量

浮点数计算是不精确的。

console.log(0.1+0.2)      // 0.30000000000000004

ES6在Number对象上面,新增一个极小的常量Number.EPSILON,作为一个误差范围。

当这个误差能够小于Number.EPSILON,我们就可以认为得到了正确结果。

var num=0.1+0.2-0.3        // 5.551115123125783e-17
num< Number.EPSILON         //    true  表示小于误差范围

Number.isSafeInteger() 安全整数

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

var num=Math.pow(2, 53)        // 9007199254740992
var num2=num+1         //  num2超过 -2^53到2^53这个范围,打印出来和num值相等,这是错误的
num==num2        // true    

上面代码中,超出2的53次方之后,一个数就不精确了。num和num2本来应该是不相等,但是返回值是相等。

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

//接上面代码
Number.isSafeInteger(num2)        // false
  • Math对象的扩展(1)

ES6在Math对象上新增了17个与数学相关的方法。所有这些方法都是静态方法,只能在Math对象上调用。下面列出常见方法。

 

Math.trunc方法用于去除一个数的小数部分,返回整数部分。

Math.trunc(4.1)     // 4
Math.trunc('123.456')	    //123    对于非数值,Math.trunc内部使用Number方法将其先转为数值
Math.trunc(NaN);      // NaN    对于空值和无法截取整数的值,返回NaN

Math.sign方法用来判断一个数到底是正数、负数还是零。

它会返回五种值:

  • 参数为正数,返回+1;
  • 参数为负数,返回-1;
  • 参数为0,返回0;
  • 参数为-0,返回-0;
  • 其他值,返回NaN。

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

 Math.cbrt('8')     // 2    2的三次方为8
  • Math对象的扩展(2)

ES6新增了4个对数相关方法

Math.expm1(x)返回ex - 1,即Math.exp(x) - 1。

Math.expm1(-1)     // -0.6321205588285577
Math.expm1(0)      // 0
Math.expm1(1)      // 1.718281828459045

Math.log1p(x)方法返回1 + x的自然对数,即Math.log(1 + x)。如果x小于-1,返回NaN。

Math.log1p(1)      // 0.6931471805599453
Math.log1p(0)      // 0
Math.log1p(-1)     // -Infinity
Math.log1p(-2)     // NaN

Math.log10(x)返回以10为底的x的对数。如果x小于0,则返回NaN。

Math.log10(2)      // 0.3010299956639812
Math.log10(1)      // 0
Math.log10(0)      // -Infinity    Infinity表示正无穷大的数值
Math.log10(-2)     // NaN 

Math.log2(x)返回以2为底的x的对数。如果x小于0,则返回NaN。

Math.log2(2)       // 1
Math.log2(1)       // 0
Math.log2(0)       // -Infinity
Math.log2(-2)      // NaN
Math.log2(1024)    // 10

 

  • Math对象的扩展(3)

ES6新增了6个三角函数方法:

  • Math.sinh(x) 返回x的双曲正弦
  • Math.cosh(x) 返回x的双曲余弦
  • Math.tanh(x) 返回x的双曲正切
  • Math.asinh(x) 返回x的反双曲正弦
  • Math.acosh(x) 返回x的反双曲余弦
  • Math.atanh(x) 返回x的反双曲正切

第六章:ES6快速入门第七章------数组的扩展(可私信解惑)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值