添加双精度时精度损失

Loss of precision on adding doubles?

本文关键字:损失 精度 双精度 添加      更新时间:2023-10-16

>伙计们!我遇到了一个小问题:我正在用三个双精度值做一个简单的加法。结果的精度小于使用的值。

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)