关于浮点数的json解析
近期在工作中遇到个问题
通过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解析的更多相关文章
- 使用CEF的JSON解析功能
Cef提供了JSON解析功能,在cef_parser.h文件内有三个JSON相关的方法: CefParseJSON CefParseJSONAndReturnError CefWriteJSON 以最 ...
- 超详细JSON解析步骤
JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...
- 【JSON解析】JSON解析
前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这[XML解析(一)]SAX解析XML,[XML解析(二)]DOM解析XML,[XML解析(三 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- Qt on Android: http下载与Json解析
百度提供有查询 ip 归属地的开放接口,当你在搜索框中输入一个 ip 地址进行搜索,就会打开由 ip138 提供的百度框应用,你能够在框内直接输入 ip 地址查询.我查看了页面请求,提取出查询 ip ...
- 一起学Android之Xml与Json解析
概述 在网络中,数据交互通常是以XML和Json的格式进行,所以对这两种格式的数据进行解析,是Android开发中的必备功能,本文以一个简单的小例子,简述Android开发中Xml和Json解析的常用 ...
- 高手教您编写简单的JSON解析器
编写JSON解析器是熟悉解析技术的最简单方法之一.格式非常简单.它是递归定义的,所以与解析Brainfuck相比,你会遇到轻微的挑战 ; 你可能已经使用JSON.除了最后一点之外,解析 Scheme的 ...
- 几百行代码实现一个 JSON 解析器
前言 之前在写 gscript时我就在想有没有利用编译原理实现一个更实际工具?毕竟真写一个语言的难度不低,并且也很难真的应用起来. 一次无意间看到有人提起 JSON 解析器,这类工具充斥着我们的日常开 ...
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
随机推荐
- hdu 2544(SPFA)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 3371(启发式合并的最小生成树)
Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- Python的程序结构[2] -> 类/Class[2] -> 方法解析顺序 MRO
方法解析顺序 / MRO (Method Resolution Order) 关于方法解析顺序(MRO)的详细内容可以参考文末链接,这里主要对 MRO 进行简要的总结说明以及一些练习示例. 经典类和新 ...
- poj2406(后缀数组)
poj2406 题意 给出一个字符串,它是某个子串重复出现得到的,求子串最多出现的次数. 分析 后缀数组做的话得换上 DC3 算法. 那么子串的长度就是 \(len - height[rnk[0]]\ ...
- web通信 长连接、长轮询
http://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html
- Oracle 查询每天执行慢的SQL
本文转载自http://blog.itpub.net/28602568/viewspace-1364844/ 前言: 工作中的您是否有 想对每天慢的sql进行查询.汇总或者行优化等情况,如下SQL希 ...
- UVA 11134 Fabled Rooks 贪心
题目链接:UVA - 11134 题意描述:在一个n*n(1<=n<=5000)的棋盘上放置n个车,每个车都只能在给定的一个矩形里放置,使其n个车两两不在同一行和同一列,判断并给出解决方案 ...
- 每天一个linux命令1之scp
不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采 ...
- python 中的 sorted
1) 输入help(sorted)可以得到下面类容: ------------------------------------------------------------------------- ...
- OpenGL投影矩阵【转】
OpenGL投影矩阵 概述 透视投影 正交投影 概述 计算机显示器是一个2D平面.OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上.GL_PROJECTION矩阵用于该投影变换.首先,它 ...