ES6入门系列二(数值的扩展)
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() 方法返回结果
上一篇: JS获取手机型号和系统
下一篇: 017.[转] 设计模式