为了账号安全,请及时绑定邮箱和手机立即绑定

为什么最后一个数字变了?

为什么最后一个数字变了?

format_bank_number: function(number){            return (number.toString()).substr(0,4)+"********"+(number.toString()).substr(-4);        }为什么最后的9004变成9010了?
查看完整描述

8 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

最大安全整数:Number.MAX_SAFE_INTEGER(es6) === Math.pow(2,53)

1、JS中只有一种类型数,即64位(1bit 的符号位,11bits 的指数部分 ,以及52bits 的小数部分)双精度浮点数,当整数数值过大时,就会发生精度丢失。
2、所谓安全整数即能够唯一确定的数字,即能够使用64位二进制数唯一确定的整数。考虑2^53,转换成对应表示方式后其小数部分总共包括53位,发生了精度丢失,所以在JS中无法区别2^53与2^53+1;
3、安全整数与JS是否能够正确进行运算关系密切,当运算数与运算结果都处于安全整数的范围内时,才能保证JS运算结果正确。


查看完整回答
反对 回复 2019-04-10
?
Qyouu

TA贡献1786条经验 获得超11个赞

超过最大值了吧 用字符串吧


查看完整回答
反对 回复 2019-04-10
?
临摹微笑

TA贡献1982条经验 获得超2个赞

这里应该是超过数字的最大值了,银行卡号一般存的不都是字符串吗?这个卡号是你们后台传给你的还是你从用户输入得到的


查看完整回答
反对 回复 2019-04-10
?
阿晨1998

TA贡献2037条经验 获得超6个赞

超过最大值了,转换成字符串类型吧


查看完整回答
反对 回复 2019-04-10
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

Number.MAX_SAFE_INTEGER

// 9007199254740991

超过这个值的数就不安全了,如果不参与计算就用文本保存吧


查看完整回答
反对 回复 2019-04-10
?
LEATH

TA贡献1936条经验 获得超6个赞

所有ID性质的数据都应该用字符串模式,即使全是数字也不能用数字。否则处理中很容易出现问题。


查看完整回答
反对 回复 2019-04-10
  • 8 回答
  • 0 关注
  • 760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信