将整数除以double会导致精度降低

时间:2012-10-21 20:15:01

标签: c++ math

我试图将一个整数除以一个双倍值,但我相信它失去了精确度。

#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相同的值。 我不知道我在做什么错误

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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