添加双精度时精度损失
Loss of precision on adding doubles?
>伙计们!我遇到了一个小问题:我正在用三个双精度值做一个简单的加法。结果的精度小于使用的值。
double minutes = 3;
minutes = minutes / (24.0*60.0); // contains 0.00208333
double hours = 3;
hours = hours / 24.0; // contains 0.125
double days = 3; // contains 3
double age = days + hours + minutes; // result is 3.12708
我发现没有办法避免这种行为。
计算似乎没有什么问题,就像您帖子上的评论所说的那样。
如果你想看到更高的精度,请考虑查找setprecision((
没有问题。0.00208333 和 3.12708 的有效数字均为 6。这是一个正确的结果。
有时为了根据所需的精度获得值,我们必须指定精度限制,这是我的代码,工作正常,希望对您有所帮助:
double minutes = 3;
minutes = minutes / (24.0*60.0);
double hours = 3;
hours = hours / 24.0;
double days = 3;
double age = days + hours + minutes;
printf("%.8f",age);//here i have included the places of precision (.8)
相关文章:
- 如何检测 std::vector::emplace_back 上的隐式转换损失整数精度
- int 到浮点转换的精度损失
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 在不损失精度的情况下将double从C++传输到python
- 禁止具有精度损失的整数转换
- 添加双精度时精度损失
- ceil、floor 和 round 在转换为整数时会遇到精度损失问题吗?
- 精度损失
- 精度损失(分配)
- 在C++中使用 pow 时精度损失
- 从浮子到双精度,从双精度到浮子的精度损失
- 将字符串转换为双精度,然后将双精度转换为字符串,而不会损失精度
- 处理在减去两个彼此接近的双精度时的精度损失
- 精度损失
- 在C++中将双精度转换为字符串时精度损失
- 在C++中标记双精度损失的算法不会标记正确的位置
- 如果可以接受一些精度损失,如何快速紧凑地保存双精度矩阵
- 编译器不会警告精度损失
- 这种精度损失发生在哪里以及如何防止
- 在 c++ 中将双精度转换为整数损失 1