關於浮點數的json解析

來源:互聯網
上載者:User

標籤:enc   科學   過程   spatial   post請求   ref   字元   article   5.6   

近期在工作中遇到個問題

通過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解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.