添加双打时精度会下降?

时间:2013-06-20 12:19:05

标签: c++ double precision addition

人们!我遇到了一个小问题:我正在使用三个double值进行简单的添加。结果的精度小于使用的值。

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 

我发现无法避免这种行为。

3 个答案:

答案 0 :(得分:5)

计算中的任何内容似乎都没有错,就像你帖子上的评论所说的那样。

如果您希望了解更多精确度,请考虑查看setprecision()

答案 1 :(得分:0)

没有问题。 0.00208333和3.12708的有效数字均为6.这是正确的结果。

答案 2 :(得分:0)

有时为了根据所需的精度获取值,我们必须指定精度的限制,这是我的代码工作正常,希望它有所帮助:

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)