ES6学习(一):数值的扩展

chapter06 数值的扩展

6.1 二进制和八进制

二进制
前缀 0b 或者 0B

八进制
前缀 0o 或者 0O

6.2 Number.isFinite() Number.isNaN()

原先这两个方法是定义在window上的,调用的时候会先将参数转为Number类型再进行判断,而新的方法只会对数值有效,非数值的话全部返回false。

6.3 Number.parseInt() Number.parseFloat()

这两个方法被移植到了Number对象之上,是为了减少全局性方法,使得语言逐步模块化。

6.4 Number.isInteger()

需要注意的是JS内部整数的存储方法同浮点数相同,所以3和3.0被视为同一个数。

6.5 Number.EPSILON

一个极小的浮点常量,当误差项小于这个常量的时候,可以认为计算是精确地。

6.6 安全整数和Number.isSafeInteger()

JS可以准确表示的整数范围是( -pow(2, 53), pow(2, 53) )。不包括两个端点。
引入的常量:
Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER
Number.isSafeInteger()判断一个数字是否是安全整数
需要注意:在进行运算的时候,要对每一个参与运算的数进行安全性检查。

6.7 Math对象的静态方法

6.7.1 Math.trunc()

remove the decimal part of a float number and return the integer part.

A string will be parsed before processsed.

6.7.2 Math.sign()

判断一个数到底是正数、负数还是零
参数为正数,返回+1
参数为负数,返回-1
参数为0,返回0
参数为-0,返回-0
其他返回NaN

6.7.3 Math.cbrt()

return the cubic root of a number
a string will be parsed before process.

6.7.4 Math.clz32()

返回一个数用32位二进制表示时有多少个前导零(最多32个)。

对于小数,该方法仅考虑正数部分。

对于字符串,会先转为数字再运算。

6.7.5 Math.imul()

返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的整数
之所以引入这样一个方法是因为JS的精度限制,超过2的53此房之后的数字无法精确地表示,所以大数乘法的低位不准确,这个方法可以返回正确的低位值。

6.7.6 Math.fround()

返回一个数的单精度浮点数形式。
整数:没有任何不同

小数:返回最接近的这个小数的单精度浮点数

6.7.7 Math.hypot()

返回所有参数的平方和的平方根

6.8 Math.signbit()

返回一个数在IEEE 754标准下表示时符号位(第一位)的正负值。(0表示正数,1表示负数)
如果符号位为1,返回true。

+0 / false

-0 / true

6.9 指数运算符 **

抄python的
与Math.pow()的实现并不相同,对于特别大的运算结果会有轻微的差异

6.10 Integer

JS 所有的数字均保存为64位浮点数,这决定了正数的精确程度只能到53个二进制位。超过了这个范围,都是无法精确表示的。

Integer 只用来表示正数,没有位数的限制。

表示的时候后面都需要加上后缀n。

Integer不能参与任何可能发生类型转换的运算(因为他是没有表数限制的) 例如:

==

与Number类型的数值运算

>>>位运算符,因为没有最高位,这种运算是没有意义的

+ 因为总是返回一个Number类型的数值

===是可以进行的,因为这是一个全等运算

posted @ 2019-03-13 13:30  JGC-HUST  阅读(217)  评论(0编辑  收藏  举报