2

可能的重复:
c++ 中的 setprecision 是否循环?如果是这样,为什么我会看到这个?

这是我正在使用的功能

char* round(double value, int decimal_places)
{
decimal_places = decimal_places+1;
std::stringstream s2;
   s2 << std::setprecision(decimal_places) << std::setiosflags(std::ios_base::fixed) << value;
std::string st = s2.str();
  return st;
}

我的输入值是0.89425,小数宫的数量是4

我的输出是 0.8942 但我想要 0.8943 即,如果我所需的小数位后的下一个数字 >= 5,那么输出应该四舍五入到下一个值。

4

1 回答 1

1

0.89425 不能用二进制浮点数精确表示;最接近的可精确表示的值是 0.894249999999999989341858963598497211933135986328125,正确四舍五入到十进制 0.8942。

如果您想查看小数舍入行为,请使用定点或小数浮点。

于 2012-11-28T10:34:30.917 回答