C ++舍入到1位小数,显示2位小数

时间:2017-09-26 06:27:13

标签: c++ rounding

也许我没有在不同的环境中理解它或者没有找到它,但我只需要知道如何将双精度舍入到1位小数但显示2位小数

cout << fixed << setprecision(1);

对它进行了解决,但是如何在答案后显示额外的零点。

离。显示1.50而不是1.5

有没有办法在不包括数学的情况下做到这一点?

修改

我想我要问的是:在舍入到第一个小数时,有没有办法设置精度(2)?

目前当我将其设置为setprecision(2)时,我得到1.49而我只想保持尾随零而不是使用setprecision(1)

对于解释不佳的问题感到抱歉。

1 个答案:

答案 0 :(得分:1)

你提到你不想包括数学(但不说确切原因)。基于此,您可以使用强制转换为int来进行舍入:

const double x = 1.51;
const double rounded_x = static_cast<int>(x * 10) / 10.0;
cout << fixed << setprecision(2) << rounded_x;

<强>更新

如果要舍入到最接近的值(1.49 - > 1.5,而不是1.4),只需:

const double rounded_x = static_cast<int>(x * 10 + 0.5) / 10.0;

最后,你没有告诉负数,上面的代码将在-1.49到-1.4之间。如果要舍入到-1.5,则使用以下代码:

const double rounded_x = static_cast<int>(x * 10 + (x >= 0.0 ? 0.5 : -0.5)) / 10.0;

当然,您可以随时执行以下操作:

const double x = 1.51;
cout << fixed << setprecision(1) << x << '0';

但我觉得这不是你正在寻找的黑客类型;)