如何处理javascript中var类型有效数据极限值问题(超大数据)

来源:互联网 发布:java多线程作用 编辑:程序博客网 时间:2024/04/28 22:26

最近在做web项目中遇到一个从来未遇到的问题,这个问题相信做为web开发的程序员来说遇到的可能性比较小!那么这个问题是怎么样出现的呢?我们有该如何解决这个问题呢?

由于javascript是弱类型语言,我们一般的基本数据定义都是用var来声明的,那对于大的数据处理javascript提供了number类型,查看资料也有说javascript目前采用的是IEEE754标准定义的64为浮点数值格式来表达数据的,也就是说应该能支持到64位!也就是可以支持16位的有效数字,像C语言一样,那么这个16位的有效数字最大是多少呢?答案是:9007199254740991,二进制为11111111111111111111111111111111111111111111111111111,53个1,如果超出这个数字就会被取偶,至于怎么取我们还是肯几组数据吧!

9007199254740991
11111111111111111111111111111111111111111111111111111
9007199254740992
100000000000000000000000000000000000000000000000000000
9007199254740993
100000000000000000000000000000000000000000000000000001
9007199254740994
100000000000000000000000000000000000000000000000000010
9007199254740995
100000000000000000000000000000000000000000000000000011
9007199254740996
100000000000000000000000000000000000000000000000000100
9007199254740997
100000000000000000000000000000000000000000000000000101
9007199254740998
100000000000000000000000000000000000000000000000000110
9007199254740999
100000000000000000000000000000000000000000000000000111
9007199254741000
100000000000000000000000000000000000000000000000001000

如果你直接var num = 9007199254740993 ;然后打印的话,那么显示数据就是9007199254740992

当var num = 9007199254740992;打印依然是var num = 9007199254740992;

当var num = 9007199254740995;打印是var num = 9007199254740996

当var num = 9007199254740996;打印依然是var num = 9007199254740996

当var num = 9007199254740997;打印是var num = 9007199254740996

当var num = 9007199254740998;打印依然是var num = 9007199254740998

当var num = 9007199254740999;打印是var num = 9007199254741000;

其中还是有规律的,我就不好研究了!

总之如果处理大数据还是用字符串或是自己新建一个类来处理。


如:<a href="#" onclick="detail(${busi.timeKey })">详情</a>

那个${busi.timeKey }超过以上的极限值,可以改为:<a href="#" onclick="detail('${busi.timeKey }')">详情</a>

仅仅是加上单引


0 0
原创粉丝点击