簡體   English   中英

在字符串流中寫入一個浮點值,即使沒有小數,也保持“。”

[英]Writing a floating value in a stringstream and keep “.” even if there is no decimal

我想以給定的precision轉換字符串中的double element 我想避免在字符串中獲取不必要的0 (所以我不能使用std :: fixed )。 另外,我要始終保留“。” 在我的字符串中。

所以我寫了以下函數:

std::string toString(double element, int precision)
{
   std::stringstream stream;

   stream << std::setprecision(precision) << element;
   return stream.str();
}

toString(1.25, 2)  --> "1.25" OK
toString(1.25, 17) --> "1.25" OK

但是現在,假設我執行toString(1., 2) ,然后它返回給我"1" ,但是我想保留“ . ”,所以我想要"1."

您有有效的方法嗎?

PS:我不在C ++ 11中。

感謝您閱讀我的問題。

得到一個尾隨的“。” 在所有情況下,如果都沒有尾隨零,您將需要自己進行。 但是附加一個“。” 轉換為std::string因為無論如何都非常簡單(如果只想使用流,則難度更大)。

如果您需要支持任何特定於語言環境的問題(例如,使用不同的“。”和“,”),請注意這些問題。

std::stringstream ss;
ss << std::setprecision(precision) << element;
std::string str = stream.str();
if (str.find('.') == std::string::npos)
    str.push_back('.');
return str;

或者,您可以去除尾隨零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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