关于浮点数的json解析
来源:互联网 发布:电脑windows许可证过期 编辑:程序博客网 时间:2024/06/18 00:39
最近在工作中遇到个问题
通过post请求从其它系统(好像是C#写的)获得json字符串
{"geometry":{"rings":[[[40426489.331430912,3001752.0858958033],[40426225.692211367,3001750.0779145896],[40426202.957955509,3001594.0301330695],[40426290.959128119,3001559.0584689],[40426390.723533183,3001537.0470353812],[40426464.66273,3001645.3116807956],[40426489.331430912,3001752.0858958033]]],"spatialReference":{"wkid":2364}},"succeed":true,"msg":""}
然后在我的系统(java写的)中进行json解析,
开始用的json lib 2.4进行解析
得到的json对象,然后在通过这个json对象去计算面积,怎么都不对,后来分析了一下解析后的代码
{"rings":[[[4.0426488E7,3001752],[4.0426224E7,3001750],[4.0426204E7,3001594],[4.0426292E7,3001559],[4.0426392E7,3001537],[4.0426464E7,3001645.2],[4.0426488E7,3001752]]],"spatialReference":{"wkid":2364}}
发现原来的 40426489.331430912,3001752.0858958033
变成了 4.0426488E7,3001752
这个差太远,小数部分全部丢失了
后面我的解决办法是:不要这个json解析过程,直接对json字符串进行split,然后得到我想要的部分,然后再请求服务计算面积。
这个问题虽然解决了,但我一直没弄明白json lib解析为什么会这样,我原以为是c#和java对浮点数的处理不同引起的。
我又试了网上几个常用的json解析包
Gson,smartJSON
解析出来的结果都是
{"rings":[[[4.042648933143091E7,3001752.0858958033],[4.042622569221137E7,3001750.0779145896],[4.042620295795551E7,3001594.0301330695],[4.042629095912812E7,3001559.0584689],[4.042639072353318E7,3001537.047035381],[4.042646466273E7,3001645.3116807956],[4.042648933143091E7,3001752.0858958033]]],"spatialReference":{"wkid":2364}}
虽然用的也是科学计数法,但是精度没损失
看来是json lib的问题了。
- 关于浮点数的json解析
- 关于浮点数的比较
- 关于浮点数的问题
- 解析浮点数内存
- 关于限制浮点数位数的类
- 关于浮点数的原理详解
- 关于浮点数的小常识
- 关于浮点数的内存结构
- 关于浮点数的一些概念
- 关于js中浮点数的运算
- 关于浮点数问题的一点思考
- 关于浮点数和IEEE754的理解
- 关于浮点数的原理详解
- 关于浮点数的运算误差问题
- 关于浮点数的一些问题
- 关于浮点数的一些问题
- 关于打印浮点数的一个问题
- 关于浮点型数的保存方式!!!
- Java基础知识大整理
- Linux内核中ioremap映射的透彻理解
- poj 1837 dp有点类似背包
- 程序编译运行时头文件或动态链接库的查找
- C++ 60分钟入门教程 - 7、C++成员函数和运算符的重载
- 关于浮点数的json解析
- iOS中自定义delegate的实现
- HDU 4611 Balls Rearrangement
- Python vs R
- MongoDB 操作手册CRUD 删除 remove
- 调用.NET Serviced Component引发的性能问题及其解决
- 登录邮箱,注意地址栏是否是https开头
- 基于谱聚类的图像分割方法简介
- 在SQL Server 2008中配置文件流(FILESTREAM)