【问题标题】:Round of double value to 3 decimal places [duplicate]将双精度值舍入到小数点后 3 位 [重复]
【发布时间】:2016-09-08 21:54:29
【问题描述】:
double s = 0.320166

我想将此值四舍五入到小数点后 3 位。 为此,我正在使用此代码

int v = s * 1000;
s = double(v)/1000;

当我显示s 时,我得到了这个结果0.32。 它没有在最后显示 0。我想显示 0.320 精确到小数点后 3 位。我知道结果是对的,但是到底有没有0也能显示呢?

【问题讨论】:

  • 尾随零是字符串格式问题,而不是数学问题。如果您想要前导/尾随零填充,则必须通过适当的字符串格式化函数来实现。
  • setprecision(3) 将显示小数点后 3 位。
  • @Barmar 我也是这么想的,但还是没有显示出来^^

标签: c++ rounding


【解决方案1】:
char buf[32];
sprintf(buf, "%.3f", s);

【讨论】:

  • 这是 C 代码。问题标记为 C++。
  • 这是完全有效的 C++ 代码。它适用于任何 C++ 函数。
  • 然后使用C++版本:std::sprintf.
  • 非常感谢,它完全符合我的要求
  • 如果我的回答有效,请将其标记为已接受。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
相关资源
最近更新 更多