欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ES6入门系列二(数值的扩展)

程序员文章站 2022-03-26 12:37:24
ES6 在 Number对象上新增了很多方法 1 . Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') true ; Number.isFinite('1') false 全局的isFinite()先调用Number() ......

es6 在 number对象上新增了很多方法

1 .    number.isfinite()判断是否为有限的数字

  和全局的isfinite() 方法的区别是

  isfinite('1') === true    ;    number.isfinite('1') === false

  全局的isfinite()先调用number() 方法  把  变量 转化为数字再进行判断, 所以返回 true,

  number.isfinite()只能判断数字, 对于非数字一律返回false

 

2  ,  number.isnan() 判断是否为nan,

  只有nan 才返回true, 否则返回false

 

3 , es6 把全局的parseint()和parsefloat()   移植到了number对象上,但行为保持不变,

 是为了逐步减少全局方法, 使语言逐渐模块化

 

4  , number.isinterger()判断是否为整数,  注意一点,javascript内部整数和浮点数是同样的存储方法  

    所以number.isinteger(2) === number.isinteger(2.0) 

 

5,  number.epsilon是一个极小常量, 一般来说, 差值小于这个极小常量的两个数我们就认为是相等的

  因为javascript浮点数的计算不精确,0.1+ 0.2 = 0.30000000000000004

  如果 math.abs(0.1+ 0.2 - 0.3)  < number.epsilon 我们就认为 0.1+ 0.2 =  0.3

 

6 ,  number.issafeinteger()  

  我们知道javascript表示整数的精度范围在-2的53次方到2的53次方之间,

  超过这个范围的整数javascript就无法精确表示了,比如

  math.pow(2, 53) + 1 ===  math.pow(2 ,53)    / true

  es6引入了两个数来表示这个范围

  number.max_safe_integer = math.pow(2, 53)  - 1;

  number.min_safe_integer = math.pow(2, 53)  + 1;

  判断一个整数是否落在这个区域就可以用 number.issafeinteger()  ,

  它只能传整数进去, 不是整数一律返回false

  

7 , 基于6 我们知道javascript无法准确的表示大于2的53次方的整数, 

  由此es6新增了一个bigint的数据类型, 数值后面加n 来区分数字

  typeof 1234n  ===  'bigint'

  当计算math.pow(2, 53) + 1 的时候 

  9007199254740992 + 1 = 9007199254740992 (不精确)

  9007199254740992n + 1n = 9007199254740993n  (精确)

  在调用tostring() 方法返回结果