我將一些參數(所有類型爲double
)寫入文件以用於執行一些複雜的計算。我寫的參數文件,像這樣:以更高的精度將數字寫入文件 - C++
refStatsOut << "SomeParam:" << value_of_type_double << endl;
其中refStatsOut
是ofstream
參數。有四個這樣的參數,每個類型double
。我所看到的寫入文件與實際值不同(在精度損失方面)。舉個例子,如果value_of_type_double
的值爲-28.07270379934792,那麼我在文件中看到的是-28.0727。
此外,一旦這些統計數據已經計算並寫入,我運行使用這些統計數據的不同程序。讀取文件並將值初始存儲爲std::strings
,然後通過atof
函數轉換爲double
。這導致了我上面顯示的值,並使計算進一步下降。
我的問題是這樣的:
1.是否有增加與哪一個可以寫(的double
類型等)值到一個文件,以便不丟失任何精度的分辨率的方法是什麼?
2.難道這也可能是std::string
到double
與atof
轉換的問題嗎?如果是這樣,我可以使用其他什麼功能來解決這個問題?
P.S:請讓我知道萬一這個問題的一些細節不清楚。我會嘗試更新它們並提供更多細節。
感謝您的回覆。但沒有辦法,我可以設置動態考慮到小數位的數量每一次將不同精度的方法是什麼?我怎麼做? – Sriram
@Sriram - 你可能想恢復到printf或fprintf,它允許靈活的格式說明符。 http://www.cplusplus.com/reference/clibrary/cstdio/printf/ – Leon