在后台使用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)