1

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

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 

我没有办法避免这种行为。

4

3 回答 3

5

正如您帖子上的评论所说,计算似乎没有任何问题。

如果您想查看更高的精度,请考虑查找setprecision()

于 2013-06-20T12:26:09.477 回答
0

没有问题。0.00208333 和 3.12708 的有效数字都是 6。这是一个正确的结果。

于 2013-06-20T12:52:49.143 回答
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)
于 2013-06-20T12:59:31.630 回答