c++ - 除以 1000 舍入 double var 并丢失小数位
问题描述
#include<iostream>
using namespace std;
int main()
{
unsigned int x = 293125555;
double y = (double)x/1000.0;
cout << y << endl;
return 0;
}
我希望输出为 293125.555 但我得到的是 293126。这是因为 double 存储在内存中的方式吗?
解决方案
std::numeric_limits<T>
在limits
:
提供有关库编译的特定平台中算术类型(整数或浮点)属性的信息。
std::setprecision
在iomanip
:
设置用于格式化输出操作的浮点值的小数精度。
因此,您可以使用:
#include <iostream>
#include <iomanip> // setprecision()
#include <limits>
using namespace std;
int main()
{
unsigned int x = 293125555;
double y = (double)x/1000.0;
cout << setprecision(numeric_limits<double>::digits10 + 1)
<< y
<< endl;
return 0;
}
并得到预期的结果:
293125.555
推荐阅读
- sql - 使用分区聚合某些行的总和
- module - ModuleNotFoundError:使用 Spyder
- php - 通过ajax调用将参数传递给控制器中的方法
- python - 在 Django-Filters 中使用 Django-MPTT 让子节点过滤父节点
- youtube - 从 Youtube 获取视频 ID“Live Stream”
- react-native - 如何使用 npm 安装 lodash.filter?
- python-3.x - 动态更改 CSV 文件的标题
- google-contacts-api - 您无法删除此项目,因为它与 Dialogflow 代理相关联
- types - Haxe:如何检查变量是否为函数
- html - 将样式应用于类而不影响导航 LI 中的其他类?