在字符串流中写入浮点值并保持"."即使没有小数
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:我不在第 11 C++。
感谢您阅读我的问题。
要在所有情况下都获得尾随的".",而不同时获得尾随零,您需要自己做。但是,将"."附加到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;
或者,您可以去除尾随零。