input number设置最大最小值_es6中关于Number的三个扩展方法介绍

01Number.isFinite()                                                            在日常开发中,我们可能会忽略掉Number类型的取值范围,因为它的取值范围足够大,也足够小(怎么感觉怪怪的),但是当我们的开发涉及到特别大的数值计算时,难免出现超出范围的问题,尽管可能性很小,但是为了严谨,我们也不得不避免这个问题。而此方法可以帮助我们判断一个值是否为有限值,即不是Infinity.那么我们先来说说Number的取值范围。
Number.MIN_VALUE:最小值,值为5e-324            Number.MAX_VALUE:最大值,值为1.7976931348623157e+308
当超出最大值的范围,就会转换为Infinity,即正无穷大,如果这个值是负值,就会转换为-Infinity,即负无穷大,如果是正值,当超出最小值的范围,就会转换为0。所以Number的取值范围在JavaScript中为:[ 5e-324 , 1.7976931348623157e+308 ]以上都是科学计数法的写法,即aeb = a × 10^b(a和b都可为负数)。所以在执行极小或极大的计算时,判断值是否在取值范围内是必要的。
// 两个最大值相加,必然会超出取值范围var result = Number.MAX_VALUE + Number.MAX_VALUE;// 打印结果为:Infinity,即正无穷大console.log(Number.isFinite(result)); // false,代表超出取值范围
02Number.isNaN()                                                               此方法用来验证一个值是否是NaN,当然了,你可能会说有isNaN()方法,干嘛还需要Number.isNaN(),我们一起来看下区别吧:isNaN()方法会先调用Number()方法把非数值转为数值,然后再进行判断,而Number.isNaN()方法只对数值有效,会直接进行判断是否是NaN。看下如下案例吧:
    const data1 = NaN;    console.log(isNaN(data1)); // true    console.log(Number.isNaN(data1)); // true    const data2 = '';    console.log(isNaN(data2)); // false    console.log(Number.isNaN(data2)); // false    const data3 = 'asdklajd';    console.log(isNaN(data3)); // true    console.log(Number.isNaN(data3)); // false    const data4 = undefined;    console.log(isNaN(data4)); // true    console.log(Number.isNaN(data4)); // false    const data5 = null;    console.log(isNaN(data5)); // false    console.log(Number.isNaN(data5)); // false    const data6 = 0;    console.log(isNaN(data6)); // false    console.log(Number.isNaN(data6)); // false
由上述案例可以明显的看到区别,传统的方法会先对值转为数值类型,才会去进行判断,而新方法可以很严格的帮助我们去判断一个NaN值,有利于作出一些处理。03Number.isInteger()                                                                 该方法用来判断一个值是否是整数。可能大家会有点疑惑,判断是否是整数有什么意义呢?那举个我实际场景中需要用到的例子:我当时有一个指数字段,后端可能给我返回10、23、45这种整数,也可能返回17.23、0.24这种小数,乍看一下可能觉得没有问题,但是当返回0.44649216、0.979316761316这种数字呢?保留指定位数的小数可能就是必然要做的事情,那大家就会觉得保留小数就好了,干嘛还纠结是不是整数?整数如果保留小数的话就可能会变为10.00、23.00、45.00、0.00。所以其实整数是没必要保留小数位数的。我以前的判断方法是这样的:先判断是否含有小数点,如果含有表示这不是一个整数,然后才进行保留两位小数,而且indexOf是字符串方法,我们需要先转为字符串判断,然后再转回数字去保留小数,很麻烦,而且不能让人很直观的理解你需要做什么事情:
 if (rate.toString().indexOf('.') >= 0) {    rate = Number(rate.toFixed(2));}
使用此方法就不必考虑那么多了,就只需要判断是否为整数,整数取反表示不是整数,然后进行保留小数处理,而且更加语义化:
 if (!Number.isInteger(rate)) {     rate = Number(rate.toFixed(2));}
以上就是本次介绍的三个es6中数值的扩展方法,当然,还有其他方法需要大家去了解(如Number.parseInt、Number.isSafeInteger()),这里就不一一介绍了。期待能够对你有所帮助~~~

7989a6284d8923bbd723df0427d8e4ec.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值