也许我没有在不同的环境中理解它或者没有找到它,但我只需要知道如何将双精度舍入到1位小数但显示2位小数
cout << fixed << setprecision(1);
对它进行了解决,但是如何在答案后显示额外的零点。
离。显示1.50而不是1.5
有没有办法在不包括数学的情况下做到这一点?
修改
我想我要问的是:在舍入到第一个小数时,有没有办法设置精度(2)?
目前当我将其设置为setprecision(2)时,我得到1.49而我只想保持尾随零而不是使用setprecision(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';
但我觉得这不是你正在寻找的黑客类型;)