我對網路編程很陌生。
我需要通過網路發送由雙精度組成的緯度經度對。我正在編碼兩端,所以我可以使用我喜歡的任何方法。目前。我將兩者直接轉換為位元組并發送整個 16 個位元組。
我想知道的是,是否最好將每個除以最大可能值(分別為 90 和 180)然后乘以 Int32.MaxValue 然后在發送之前轉換為 int。顯然,這會將發送的資料減半,但我無法計算出我會失去多少精度。
有誰知道如何計算這個?
uj5u.com熱心網友回復:
您從 53(型別 double/binary64 有效數維基百科 IEEE_754)減少到 32(型別整數)位 - 丟失了 21 位或大約 6 個十進制數字(2^21 ~= 2,000,000)雙精度表示的 15-16 位十進制數字。
您的應用需要什么樣的精度?你的緯度和經度坐標是度數嗎?在赤道上 1 度(緯度或經度)大約為 110 公里,因此 3 位有效數字使您的解析度為 ~100 公里、5 位數字 ~1 公里、8 位數字 ~1m、10 位數字(您可以通過變換獲得最佳效果) ~10厘米。
這只是一個數量級的經驗法則,可以給你一個想法。如果您的坐標必須決議為小于 10m,則應謹慎行事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346077.html
