2014-07-08 66 views
1

在C++程序中存儲GPS座標的最佳變量類型是什麼?我寫下面的代碼只是爲了試用它,而不管我選擇什麼變量類型的問題仍然存在。我失去了十進制GPS座標精度

#include<iostream> 
#include<algorithm> 
#include<math.h> 
using namespace std; 

class Coordinate { 
    public: 
      float xcoor, ycoor; 
      int radius; 
      void set_values (float, float, int); 

}; 

void Coordinate::set_values (float x, float y, int r){ 
    xcoor = x; 
    ycoor = y; 
    radius = r; 
} 

int main(){ 
    Coordinate test; 
    test.set_values (32.682633, -117.181554, 50); 
    cout << "coordinates: (" << test.xcoor << "," << test.ycoor << ")\n"; 
    return 0; 
} 

此代碼輸出值: (32.6826,-117.182)

所以,很顯然我失去的精度鉅額資金,但反正是有,我可以保持呢?我之前沒有做過GPS座標,也找不到有類似問題的人。 謝謝你的幫助。

回答

1

在算術中使用浮點變量可能導致精度損失,但據我所知,您不用座標進行任何計算。

我懷疑你認爲std::cout確實輸出了具有完全精度的浮點變量,默認情況下情況並非如此。

double test = 1.23456789; 
std::cout.precision(10); 
std::cout << "test: " << test << std::endl; // prints "test: 1.23456789" 

that question,以及所述documentation of ostreams進一步的信息。

+0

哈哈哦哇。謝謝! – idaWHALE

0

據我所知,它只能打印6位數字。嘗試setwsetprecision。使用前者,您可以設置一個常數來打印數字或字符(這在對齊時很方便),後者設置您的程序打印多少位數。

使用浮點數,您不應該從這些數字中丟失任何數據。