2011-05-09 157 views
29

我正在QT中編寫程序。我想用C++將double轉換爲Qstring將雙精度轉換爲QString

+0

@Macmade,我是QT和CPP的新手。但我有一個Java代碼,所以我想轉換爲QP應用程序的CPP。 – Nagaraju 2011-05-09 18:26:43

回答

62

使用QString的數法(文檔是here):

double valueAsDouble = 1.2; 
QString valueAsString = QString::number(valueAsDouble); 
+0

這是一個令人討厭的問題,因爲精確度是固定的。 – ManuelSchneid3r 2016-03-05 11:13:07

+0

小心:該調用可能導致精度損失。例如,我曾經做過同樣的調用,例如,我從6844418.0獲得了6.84442e + 06。它們是公制的UTM座標,所以10米的損失是不可接受的。請根據應用要小心。我用'std :: stringstream ss; ss << std :: setprecision(12); ss <<(double)value;'*我如何在這個事物中降價代碼塊?* – 2017-03-06 12:09:22

16

相反QString::number()的我會用QLocale::toString(),這樣我就可以現場感知組seperatores像德國的 「1.234.567,89」。

+0

非常好的一點。 +1 – 2013-05-27 23:21:34

+2

並不總是如此。我需要轉換到美國系統(48.1),這會搞砸了。 – 2014-07-23 14:27:12

6

您可以使用ARG(),如下圖:在其他功能「固定精度」,如::

double dbl = 0.25874601; 
QString str = QString("%1").arg(dbl); 

這克服的問題setNum()和數量(),這將產生隨機數以完成定義的精度

+0

根據文檔「轉換使用默認語言環境」,默認的精度也是-1,而不是「QString :: number」的6。 – ymoreau 2018-01-05 16:14:04

0

基於@克里斯蒂安的答案,我希望顯示固定的小數位數。這可以通過QString::number(...)函數中的其他參數來完成。舉例來說,我想三位小數:

double value = 34.0495834; 
QString strValue = QString::number(value, 'f', 3); 
// strValue == "34.050" 

'f'指定十進制格式符號(詳細信息here,你也可以指定科學計數法)和3指定精度(小數點後的位數)。可能已經鏈接在其他答案,但更多關於QString::number功能的信息可以發現here in the QString documentation