ES6随笔--各数据类型的扩展--数值

Posted muting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6随笔--各数据类型的扩展--数值相关的知识,希望对你有一定的参考价值。

ES6随笔--各数据类型的扩展(2)--数值

二进制和八进制表示

二进制0b(或0B)表示;八进制0o(或0O)表示;

这两种字符串转换成十进制数值,使用Number()方法;

Number(‘0b111‘)  // 7

Number.isFinite(), Number.isNaN();

Number.isFinite()的参数如果不是数值,一律返回false, Infinity/-Infinity/NaN都返回false

Number.isNaN()对不是NaN的参数一律返回false;

这两个方法与传统全局方法相比没有进行数值转换,对于非数值参数一律返回false

Number.parseInt(), Number.parseFloat();

与原来的全局方法行为相同,这样做是为了减少全局方法,逐步模块化;

Number.isInteger()

判断一个参数是否为整数,如果数据要求精度较高,可能会不准确;

Number.EPSILON

表示1与大于1的最小浮点数之间的差值(常量);实际上是JS能够表示的最小精度;

Number.EPSILON === Math.pow(2, -52)

可以用来设置“可以接受的误差范围”。

安全整数和Number.isSafeInteger()

JS能够精确表示的整数范围在Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER之间;这个范围内是“安全的”,否则就会“不安全”,检验方法为Number.isSafeInteger()

但是对于一个运算,则要对运算数和结果都检验,全部在安全整数范围内结果才是可信的。

Math对象的扩展

1) Math.trunc() 去除小数部分,保留整数部分,相当于

Math.trunc = Math.trunc || function(x) {
  return x < 0 ? Math.ceil(x) : Math.floor(x);
};

非数值会先转换为数值,不能截取数值或空值,返回NaN;

2) Math.sign():确认一个参数是正数、负数还是零;非数值会先转换为数值;无法转换则返回NaN;相当于

Math.sign = Math.sign || function(x) {
  x = +x; // convert to a number
  if (x === 0 || isNaN(x)) {
    return x;
  }
  return x > 0 ? 1 : -1;
};

返回值包括+1,-1, 0, -0, NaN;

3) Nath.cbrt(): 计算一个数的立方根;相当于

Math.cbrt = Math.cbrt || function(x) {
  var y = Math.pow(Math.abs(x), 1/3);
  return x < 0 ? -y : y;
};

4) Math.clz32(),返回一个数的32位无符号整数形式有多少前导零;对空值或其他类型值会先转换为数值再计算;

5) Math.imul(),返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32位的带符号整数;对于那些很大的数的乘法,低位数值往往都是不精确的,Math.imul方法可以返回正确的低位数值.

Math.imul(0x7fffffff, 0x7fffffff) // 1

6) Math.fround(), 返回一个数的32位单精度浮点数形式。

7) Math.hypot(), 返回所有参数的平方和的平方根。

4个对数方法:

8) Math.expm1(), 返回Math.exp(x)-1

9) Math.log1p(), 返回1+x的自然对数;

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

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

6个双曲函数方法;

指数运算符(**):对于特别大的运算结果,与Math.pow()结果会有细微差异;与等号连用,作为新的赋值符:

a **= 2  // a = a ** 2; a = a * a;
b **= 3  // b = b ** 3; b = b * b * b;

以上是关于ES6随笔--各数据类型的扩展--数值的主要内容,如果未能解决你的问题,请参考以下文章

ES6随笔--各数据类型的扩展--函数

ES6随笔--各数据类型的扩展 --字符串和正则

ES6变量常量字符串数值

ES6数值的扩展

JavaScript学习笔记--ES6学习 数值的扩展

es6新增--变量定义与变量类型