Math 此代码是否包含被零除的错误?

Math 此代码是否包含被零除的错误?,math,divide-by-zero,metatrader4,mql4,Math,Divide By Zero,Metatrader4,Mql4,我已经从下载了MetaTraderMQL4语言.mq4源代码文件,我认为该文件中包含一个被零除的错误。有关章节如下: // Calculate sums for the least-squares method n = ( Taps - 1 ) / 2; sx2 = ( 2*n + 1 ) / 3.0; sx3 = n * ( n + 1 ) / 2.0; sx4 = sx2 * ( 3*n*n + 3*n - 1

我已经从下载了MetaTrader
MQL4
语言
.mq4
源代码文件,我认为该文件中包含一个被零除的错误。有关章节如下:

                                   // Calculate sums for the least-squares method
n   = ( Taps - 1 ) / 2;

sx2 = ( 2*n + 1 ) / 3.0;

sx3 = n * ( n + 1 ) / 2.0;

sx4 = sx2 * ( 3*n*n + 3*n - 1 ) / 5.0;

sx5 = sx3 * ( 2*n*n + 2*n - 1) / 3.0;

sx6 = sx2 * ( 3*n*n*n*( n + 2 ) - 3*n + 1 ) / 7.0;

den = sx6 * sx4 / sx5 - sx5; // <---------------------------- a DIV!0 error here?
//计算最小二乘法的和
n=(抽头-1)/2;
sx2=(2*n+1)/3.0;
sx3=n*(n+1)/2.0;
sx4=sx2*(3*n*n+3*n-1)/5.0;
sx5=sx3*(2*n*n+2*n-1)/3.0;
sx6=sx2*(3*n*n*n*(n+2)-3*n+1)/7.0;
den=sx6*sx4/sx5-sx5;//
sx5-sx5
可能总是等于零,所以这里会出现被零除的错误


编辑:没关系,这是不正确的。我不这么认为,首先乘法,sx6*sx4,然后除以sx5,然后从最终结果中减去sx5。如果sx5为零,则会发生被零除。要找到导致sx5为零的原因,请求解n的sx5=0

0 = sx5
0 = sx3 * (2*n*n + 2*n - 1) / 3.0
0 = (n*(n + 1) / 2.0) * (2*n*n + 2*n - 1) / 3.0
...
0 = 2*n^4 + 4*n^3 + n^2 - n
该方程的一个可能解决方案是n=0,因此,如果抽头为1,则会出现零除误差。我不知道这个方程是否还有其他解


更新:增加了数学。

缺少括号不允许发生
sx5-sx5
?它会先做
sx6*sx4/sx5
,然后`-sx5`如果Metatrader使用正常的操作顺序,那么sx5-sx5不会出现在发布的代码中的任何地方。哦,是的,对不起,我没有注意到我没有看到任何除法n@Belinda,sx5由n计算得出
0 = sx5
0 = sx3 * (2*n*n + 2*n - 1) / 3.0
0 = (n*(n + 1) / 2.0) * (2*n*n + 2*n - 1) / 3.0
...
0 = 2*n^4 + 4*n^3 + n^2 - n