簡體   English   中英

將lexical cast string提升一倍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM