ES6知识点总结(四)

数值与Number

数值

JavaScript数值的特征
• 不区分整数值和浮点数值。
• 所有数值均用浮点数值表示。
• 采用IEEE-754标准定义的64位浮点数格式表示。

整数直接量
除十进制外,JavaScript能识别十六进制(以0x或0X为前缀)、二进制(以0b或0B为前缀)和八进制(以0o或0O为前缀)

浮点数直接量
实数写法:由整数部分、小数点和小数部分组成。如:3.1415926

指数记数法:在实数部分后跟字母e或E,再跟正负号,在跟一个整型的指数。如:5.12e12 -> 5.12×10^12

算术运算

  • 运算符,包括:+、-、*、/、%、**(指数运算符,ES6新增)
//指数运算符
let a = 2 ** 3       //2*2*2
console.log(a)     //8

//注意,指数运算符按右优先结合
let a = 2 ** 2 **2   //  2**(2**2) ===2**4  ===2*2*2*2
console.log(a)      //16
  • 溢出(overflow)(当结果超过了JavaScript能表示的数值上限时发生)
    超过数值上限时,结果为Infinity,若超过了负数范围,则为-Infinity
  • 下溢(underflow)
    当运算结果无限接近于零,并比JavaScript能表示的最小值还小时发生
    JavaScript会返回0,若当一个负数发生下溢时,则返回-0。

注意:
实数有无数个,但JavaScript通过浮点数的形式只能表示其中有限个数
二进制浮点数并不能精确表示类似0.1这样的简单数值。
如:0.3-0.2 ->0.09999999999999998
建议,尽可能使用大整数进行等比修正以避免该类错误。如:3-2

数值转换

3个函数可将非数值转换为数值
Number( )
parseInt( )和parseFloat( )(先转换为字符串,再解析)

Number(undefined)  //NaN
Number("011")       //11
Number("1.1")       //1.1
Number("0xf")       //15
Number("")          //0

parseInt(22.5)     //22
parseInt("0xA")    //10
parseInt("A", 16)  //10
parseFloat("3.14159e3")   //3141.59

Number

创建一个Number对象的构造函数
let num=new Number(10);

常用方法

  1. toString( ),获得数值对象的字符串表示。
  2. toLocaleString( ),返回数值对象的字符串本地表示。
  3. valueOf( ),返回数值对象的原始数值。
  4. toFixed(n),返回包含指定小数位数的数值字符串。其中,n表示小数位数。
  5. toExponential(n),返回科学记数法表示的数值字符串。n表示结果中的小数的位数
  6. toPrecision(n),返回数值最恰当的形式。n表示结果中数字的总位数(不包含指数)
let num = 123; 
num.toString(2);       //"1111011"
//括号中的2表示进制

let num=new Number(12356);
num.toLocaleString( )     //"12,356"

let num = 100;
num.valueOf( );       //100

let num=new Number(10.005); 
num.toFixed(2);     //"10.01"
num.toExponential(2);  //"1.00e+1"
num.toPrecision(4);     //"10.01"

新增方法(新增在Number这个对象上的)

  1. Number.isFinite( ),用于检查一个数值是否有限的(finite),如果参数类型不是数值,一律返回false
Number.isFinite(15);    //true
Number.isFinite(NaN);    //false
Number.isFinite(5/0);       //false
Number.isFinite(Infinity);    //false
Number.isFinite( "foo");    //false
Number.isFinite(true);     //false
  1. Number.isNaN( ),用于检查一个是否为NaN,如果参数类型不是NaN,一律返回false
Number.isNaN(15);      //false
Number.isNaN(true);    //false
Number.isNaN(NaN);    //true
  1. Number.parseInt( )与Number.parseFloat( ),两种方法和全局方法parseInt( )和parseFloat( )相同
  2. Number.isInteger( ) 用于判断一个数值是否为整数。如果参数不是数值,返回false
Number.isInteger("23");    //false
Number.isInteger(12.5);    //false
Number.isInteger(true);     //false
Number.isInteger(12);      //true
  1. Number.EPSILON,常量,表示1与大于1的最小浮点数之间的差
    用该值来表示JavaScript的最小精度,从而在浮点数运算时用于确定误差范围。
function withinErrorMargin(left,right) {
   //假设误差为2的-50次方
   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

Math对象

保存数学公式、信息和计算,提供了一些辅助计算的属性和方法。

常见属性

es6 计算合 es6的算力_es6 计算合

常用方法

  1. min( )与max( ),取最大和最小值,可以接受任意多个参数
let max,min;
max = Math.max(3,5,1,23);
min = Math.min(3,5,1,23);
 console.log(max);      //23
 console.log(min);      //1
  1. 舍入方法(把小数值舍入为整数)
  • Math.ceil( ),始终向上舍入为最接近的整数
  • Math.floor( ),始终向下舍入最接近的整数
  • Math.round( ),执行四舍五入
  • Math.fround( ),放回数值最接近的单精度(32位)浮点数表示
Math.ceil(3.4);           //4
Math.floor(3.4);         //3 
Math.round(3.45);     //3
Math.fround(3.2);    //3.200000047683716
  1. random( ),返回一个0~1之间的随机数,其中包含0但不包含1
  2. Math.trunc( ),用于去除一个数的小数部分,返回整数部分
    对于非数值,其内部会先使用Number( )转换为数值再操作。
    对于空值和无法截取整数的值,返回NaN
  3. Math.sign( ),用于判断一个数是正数、负数还是零。
    对于非数值,先将其转换为数值在判断
    返回值:
    正数:+1;负数:-1;
    0:0;-0:-0;
    其他值:NaN
  4. Math.cbrt( ),用于计算一个数的立方根。
    对于非数值,其内部会先使用Number( )转换为数值再操作。
    对于空值和无法截取整数的值,返回NaN
  5. Math.hypot( ),用于计算所有参数的平方和的平方根

其他数学方法

es6 计算合 es6的算力_Math_02