0

我试图将一个整数除以一个双精度值,但我相信它会失去精度..

#include <cmath>
#include <cstdio>
int main()
{
    double t=5465/54.0;
    double t1=(double)5465/(double)(t);
    double t3 = 5465.0/101.203;
    printf("%lf %lf %lf\n",t,t1,t3);
    return 0;
}

对于上面的代码值,t3 = 54.0003正如预期的那样,但对于 t1,它变成54而不是获得与 t3 相同的值。我不明白我在做什么错

4

2 回答 2

4

5465/54.0 的值为 101.203703704(保留 9 位小数)。在您的代码中,您正在使用它

 double t3 = 5465.0/101.203;

截断结果

 double t=5465/54.0;

出于101.203某种未知的原因。因此,由于截断,您正在计算 2 个不同的值。本质上,您期望这两个计算是相同的,但是

 5465.0/101.203 != 5465/101.203703704
于 2012-10-21T20:21:54.827 回答
1

当然,结果会有所不同。您使用 101.203 而不是 101.203703704。

于 2012-10-21T20:22:08.900 回答