2015-12-31 185 views
1

我無法將數字轉換爲字符串並保留所有小數位。在下面的代碼中,flat和flon都聲明爲double,並且有6位小數(flat = 32.447134),(flon = -100.136468)。使用QString :: number(flat = 32.4471)和(flon = -100.136)轉換後。這些都是gps座標,因此保留所有小數位非常重要。qt C++「QString :: number」不需要保留小數位數

如果我將flon縮短到-99.136468,它在轉換後保留4個小數位,所以看起來對8個字符的字符串的長度有一個限制。我需要11.

如何轉換它們並保留所有小數位?

我試過QS文檔中的「QString :: number(long n,int base = 10)」等,但在嘗試運行時遇到語法和其他錯誤。

在此先感謝!

if (ui -> northeast -> isChecked()) 
     { 
      flat = flat + .00007; 
      flon = flon + .00007; 
      lo = QString::number(flon); 
      la = QString::number(flat); 

      QString ll = la + "," + lo; 
      ui -> gps_latlon -> setText(ll); 
     } 

回答

4

您正在使用this overload of QString::number

QString QString::number(double n, char format, int precision) 

所以傳遞正確的格式和您的精度要求。

做這樣的:

str = QString::number(flat, 'f', 6); 

如果你想知道什麼f手段,check it out here

+0

非常感謝!經過幾個小時的試圖破譯qt的神祕指令,我終於想出了這個:QString la = QString(「%1」)。arg(flat,0,'f',6);我想我更喜歡你的! –

+0

這是另一種方式。雖然成本較高,但由於構建QString通常是一件昂貴的事情。 –