[英]boost lexical cast string to double
我正面臨轉換問題,我希望得到您的幫助。 我正在使用gcc4編譯器,我很受限制地使用gcc4。
我想將std :: string轉換為double。
std::string aQuantity = aRate.getQuantity();
std::string aAmount = aRate.getAmount();
// aAmount = "22.05"
double dQuantity = boost::lexical_cast<double>(aQuantity);
double dAmount = boost::lexical_cast<double> (aAmount);
// dAmount = 22.050000000000001
順便說一句,我也試過atof
,我仍然有同樣的問題。 有沒有辦法使用istringstream
setprecission(2)
istringstream
來獲得aAmount
顯示的正確值?
由於浮點值的性質,22.050000000000001是可以存儲的最接近22.05的值。 如果您只是嘗試將22.05存儲在一個double中然后打印它,則會發生同樣的情況。
如果要打印22.05,則應在輸出流上設置精度。 或者,您可以調查有理數字庫(例如, Boost.Rational )。 與double(或float)不同,這將能夠精確地存儲值22.05。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.