我试图将一个整数除以一个双倍值,但我相信它失去了精确度。
#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相同的值。
我不知道我在做什么错误
答案 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。