首页 > 解决方案 > 在 C++ 中打印时如何防止小数四舍五入?

问题描述

我正在做我的 ICT 作业,但遇到了这个问题:当我打印小数点时,它们会不断四舍五入。我已经包含了<iomanip>标题并使用了fixedsetprecision操纵器,但它仍然不断被四舍五入。这是我的代码:

#include <iostream>
#include <iomanip>

using namespace std;

int main ()
{
     double num1 = 3.12345678
     
     cout << fixed << setprecision (4);

     cout << num1 << endl;

     return 0;
}

当我运行程序时,出现的是“3.1235”而不是“3.1234”,这是我老师的预期输出。如何防止第四位小数四舍五入?

标签: c++

解决方案


@eerorika 的扩展答案。您可以使用std::fesetround()设置舍入策略,如下面的代码所示。它3.1234按您的意愿输出。此函数参数的可能值为FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD

在线尝试!

#include <iostream>
#include <iomanip>
#include <cfenv>

int main() {
    double num = 3.12345678;
    std::fesetround(FE_TOWARDZERO);
    std::cout << std::fixed << std::setprecision(4) << num << std::endl;
}

输出:

3.1234

推荐阅读