zoukankan      html  css  js  c++  java
  • js中parseInt和Number

      昨天在项目中遇到一个问题,有关字符串准换成数字的问题,具体如下:

      页面中<input type="number" id="bankNum" ng-model="bankNum" />,这个银行卡是从接口中取出来的,得到字段值是 bankCode :'3333333333333333333' 字符串类型,由于$scop.bankNum 是数字类型的,所以需要将bankCode准换成数字类型;接下来代码准换如下:

    //方法一:
    parseInt(bankCode);//即parseInt('3333333333333333333')
    //得到结果3333333333333333500

    //方法二:
    Number('bankCode');
    //得到结果3333333333333333500

    这明显不对呀。结果换了一种方式赋值:document.getElementById('bankNum').value =data.bankCode。

      由于昨天事件紧急,一值想探索其原因,想弄个明白,今天抽时间查了一下parseInt和Number的最大值和最小值。

       JavaScript中所有的数字,无论是整数还是小数,其类型均为Number。在程序内部,Number类型的实质是一个64位的浮点数,这与Java中double类型的浮点数是一致的;因此,JavaScript中所有的数都是浮点数。遵循IEEE 754标准(浮点数算术标准),JavaScript所能表示的数值范围为正负1.7976931348623157乘以10的308次方,其最小所能表示的小数为正负5乘以10的负324次方,这两个边界值可以分别通过访问Number对象的MAX_VALUE属性和MIN_VALUE属性来获取。

      
     
     「对于整数,根据ECMAScript标准的要求(http://ecma262-5.com/ELS5_HTML.htm#Section_8.5),JavaScript能表示并进行精确算术运算的整数范围为:正负2的53次方,也即从最小值-9007199254740992到最大值+9007199254740992之间的范围;对于超过这个范围的整数,JavaScript依旧可以进行运算,但却不保证运算结果的精度。值得注意的是,对于整数的位运算(比如移位等操作),JavaScript仅支持32位整型数,也即从-2147483648到+2147483647之间的整数。」

      另外,我在console面板打印了

      Number.MAX_VALUE ;->1.7976931348623157e+308
      Number.MAX_SAFE_INTEGER;->9007199254740991

      Number.MIN_SAFE_INTEGER;->-9007199254740991
      Number.MIN_VALUE;->5e-324

      以上由于'3333333333333333333' 这个是19位的,而最大表示的数字是9007199254740992,16位的;银行卡表示的数字已经超出了这个最大值范围,所以导致运算结果精度有问题。

      
      以上若有问题,请随时沟通;若对你有帮助,请帮忙点赞~

      

      参考文章:http://oceanzhu.com/archives/103

     

      

      

  • 相关阅读:
    mysql orderby 查询过慢优化
    js密码复杂度验证
    下载linux指定目录下的文件
    关于对接农业银行支付的问题
    string拼接时去掉最后一个逗号
    java基础题整理(1)
    springboot 读取 resource文件
    自动生成Excel 报表工具类
    java设计模式—— 工厂模式
    pyqt线程实现
  • 原文地址:https://www.cnblogs.com/imsomnus/p/8985420.html
Copyright © 2011-2022 走看看