【发布时间】:2011-06-30 20:16:54
【问题描述】:
我想这个问题是我之前关于将双精度转换为字符串的问题的后续问题。
我有一个 API,其中给了我一个代表数字的字符串。我需要将此数字四舍五入到小数点后 2 位,并将其作为字符串返回。我的尝试如下:
void formatPercentCommon(std::string& percent, const std::string& value, Config& config)
{
double number = boost::lexical_cast<double>(value);
if (config.total == 0)
{
std::ostringstream err;
err << "Cannot calculate percent from zero total.";
throw std::runtime_error(err.str());
}
number = (number/config.total)*100;
// Format the string to only return 2 decimals of precision
number = floor(number*100 + .5)/100;
percent = boost::lexical_cast<std::string>(number);
return;
}
不幸的是,演员表捕获了“未舍入”的值。 (即数字 = 30.63,百分比 = 30.629999999999)任何人都可以提出一种干净的方法来舍入双精度并将其转换为字符串,以便我得到自然想要的东西吗?
提前感谢您的帮助。 :)
【问题讨论】:
标签: c++