gpt4 book ai didi

c++ - 在 stringstream 中写入一个浮点值,即使没有小数也保留 "."

转载 作者:行者123 更新时间:2023-11-28 05:01:25 24 4
gpt4 key购买 nike

我想以给定的精度 转换字符串中的double 元素。我想避免在我的字符串中出现不必要的 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;

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

关于c++ - 在 stringstream 中写入一个浮点值,即使没有小数也保留 ".",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45844760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com