c++ - 在 C++ 中打印时如何防止小数四舍五入?
问题描述
我正在做我的 ICT 作业,但遇到了这个问题:当我打印小数点时,它们会不断四舍五入。我已经包含了<iomanip>
标题并使用了fixed
和setprecision
操纵器,但它仍然不断被四舍五入。这是我的代码:
#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”,这是我老师的预期输出。如何防止第四位小数四舍五入?
解决方案
@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
推荐阅读
- python - 无意义的空间名词
- php - 将页面视图添加到 API 的 WordPress 功能
- windows - Rsync > 不同步 Windows 快捷方式的内容
- c - 选择较小的错误不正确的 Printf() 语句:更少的参数与额外的参数
- javascript - 如何使用 javascript(加载时)回显节点值?
- clickhouse - 如何在 Clickhouse 中使用数组连接
- python - Blender - 尝试安装 Sverchok 插件 Scipy 包,但 PIP 已过时并且 ~WinError 5 Access denied
- python - mac:尝试使用 pip 安装 mssql-cli 失败并出现语法错误
- conv-neural-network - 针对特定全连接 nn 或 CNN 的 ASIC 设计
- matplotlib - 如何使用 matplotlib 为一系列 Seaborn 热图制作动画并导出为 mp4 文件?