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