相关疑难解决方法(0)

划分双打时意外失去精度

我有一个函数getSlope,它接受4个双精度参数并返回另一个使用这个给定参数计算的双精度,方法如下:

double QSweep::getSlope(double a, double b, double c, double d){
double slope;
slope=(d-b)/(c-a);
return slope;
}
Run Code Online (Sandbox Code Playgroud)

问题是当使用参数调用此函数时,例如:

getSlope(2.71156, -1.64161, 2.70413, -1.72219);
Run Code Online (Sandbox Code Playgroud)

返回的结果是:

10.8557
Run Code Online (Sandbox Code Playgroud)

这对我的计算来说不是一个好结果.我使用Mathematica计算了斜率,相同参数的斜率结果为:

10.8452
Run Code Online (Sandbox Code Playgroud)

或者更精确的数字:

10.845222072678331.
Run Code Online (Sandbox Code Playgroud)

我的程序返回的结果在我的进一步计算中并不好.此外,我不明白该程序如何从10.845222072678331开始返回10.8557(假设这是该部门的近似结果)?如何才能为我的部门取得好成绩?

马达里亚,先谢谢你


我使用命令行打印结果:

std::cout<<slope<<endl;
Run Code Online (Sandbox Code Playgroud)

可能是我的参数可能不好,因为我从另一个程序中读取它们(计算图形;从我的图形中读取这些参数后,我刚刚显示它们以查看它们的值但是显示的矢量可能不一样计算值的内部精度.我不知道它真的很奇怪.出现一些数值误差..)

当计算我正在读取我的参数的图形时,使用一些用C++编写的数字库(带有模板).没有OpenGL用于此计算.

谢谢,madalina

c++ precision double

6
推荐指数
3
解决办法
6450
查看次数

标签 统计

c++ ×1

double ×1

precision ×1