Skip to content

FastJSON 数字精确丢失问题

在后台使用long的一个随机数生产方式进行主键生成时。其数字长度为20。

在前台转JSON格式以后,末尾数字就自动为0,明明为整数却类似小数点精度丢失。

后来查询以后。网上已有类似问题。

Java中的大数字比如18/19位的整数(long),转为json,输出到页面后,就出现精度丢失,如果数字再大些就会出现科学计数法。

原因:

当js表达整数时,最多表达15位数字,如果超过15位就会出现精度丢失问题

 

var x = 1234567890123456999;

console.log(x);

输出结果:1234567890123457000

如果继续增加

var x = 123456789012345699999999;
console.log(x);
输出结果:1.234567890123457e+23

解决办法:
1.使用自增长-实际上15位的长度的数字已经足够绝大多数系统
2.使用字符串进行处理(java转成String)

发表评论

电子邮件地址不会被公开。 必填项已用*标注