现象
java中的大数字比如18/19位的整数(long),转为json,输出到页面后,就出现精度丢失,如果数字再大些就会出现科学计数法。
这两个问题都不是json工具包(比如Gson)的问题,而是由于js存储大数字丢失精度引起。
1、精度丢失例子:当js表达整数时,最多表达15位数字,如果超过15位就会出现精度丢失问题。
精度
整数(不使用小数点或指数计数法)最多为 15 位。
最后几位都变为0,丢失精度
var x = 1234567890123456999;
console.log(x);
输出结果:1234567890123457000
2、
数字再大一些就会出现,科学计数法
var x = 123456789012345699999999;
console.log(x);
输出结果:1.234567890123457e+23
解决办法
后台属性由数字类型改为字符串,转为json,传到前台就不会丢失了。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20303.html