我想在给定double element
的字符串中转换precision
。我希望避免在字符串中添加不必要的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"
,但我想保留&#34; .
&#34;,所以我想{ {1}}
你有一个有效的方法吗?
PS:我不在C ++ 11中。
感谢您阅读我的问题。
答案 0 :(得分:1)
要得到一个尾随&#39;。在所有情况下,如果没有尾随零,您将需要自己完成。然而,附加一个&#39;。&#39;到std::string
,因为你有一个相当简单(如果你只想使用流,则更难)。
另请注意任何特定于语言环境的问题(例如,如果您需要支持这些问题,请使用&#39;。&#39;和&#39;,&#39;)。
std::stringstream ss;
ss << std::setprecision(precision) << element;
std::string str = stream.str();
if (str.find('.') == std::string::npos)
str.push_back('.');
return str;
或者,您可以删除尾随零。