2017-02-10 39 views
-1

或者我需要使用哪種類型? 我有串,我嘗試將其轉換爲雙C++,如何從字符串中獲得正確的double值?

NFR_File.ReadString(sVal); // sVal = " 0,00003" 
dbl = _wtof(sVal); 

,並得到:

3.0000000000000001e-05 

我需要0,00003,因爲那時我應該把它寫入到文件「0,00003 「但不像3e-05。

如果大於0,0009的數字一切正常。

顯示:

sOutput.Format(_T("%9g"),dbl); 
NFP1_File.WriteString(sOutput); 

我需要它沒有尾隨零,並且還保留9個數字(含空格)

+1

該值是正確的,它只是一個關於你如何呈現*的問題,以及如何顯示*值。 *你如何顯示數值? –

+0

其實你已經從字符串中獲得了正確的double值。 –

+0

使用您使用的格式字符串,結果是正確的。 [在這裏閱讀有關格式字符串的更多信息](https://msdn.microsoft.com/en-us/library/56e442dc.aspx)。 –

回答

1

當你寫用printf,你可以指定要使用的顯著的位數[小數] LF。

例如,在你的情況,你想與5位小數打印,所以你應該使用

printf("%.5f", yourNumber); 
+0

我使用CString :: Format。我需要顯示它沒有拖尾零,也保留9位數字(在空的地方空格)。我編輯了帖子以獲得更多細節 –

+0

或許是「%9.5f」? – axalis

0

CString::Format

調用此成員函數將格式化數據寫入CString,方式與sprintf將數據格式化爲C樣式字符數組的方式相同。

它與c sprintf格式相同。您可以檢查其他答案的格式用法。

相關問題