您的位置:首页 > Web前端 > JavaScript

json解析存在的精度丢失问题详解

2017-04-22 21:30 381 查看
今天遇到了一个大坑。这个问题调查了很久。一直以为是jar包或者哪里转错了。自己动手实验了一下。发现是json js 和java数值范围不同引起的。

{

“boolean”: true,

“starttimeseconds”:9223372036854122112,

“null”: null,

“number”: 11222222222222222223,

}

上边是一段json格式的字符串。经由json编辑器转成json对象的结果是starttimeseconds:9223372036854122000 ;

造成这个现象的主要原因是js中的number数值类型是双浮点精度类型即double。而java中的starttimeseconds的类型为long类型。也就是说java中得long能表示的范围比js中number大,也就意味着部分数值在js中存不下。所以在js中字符串转成js中的object的过程中数字精度发生额了丢失。

解决方法一:将starttimeseconds设置为string类型的。这个的话来回转换的 是字符串,不存在数值丢失。

方法二:protoful.js的long.js解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java json javascript