C++ C+中的sqrt函数+;
我运行这段代码是为了计算C++ C+中的sqrt函数+;,c++,sqrt,C++,Sqrt,我运行这段代码是为了计算x[I][j]-y[j]的平方根,但它让我胡说八道 bool X[I][J]={}; //nodes bool Y[J]={}; //medians double denominator=0; double miu=0; outFile<< "denominator= " << denominator << endl; for(i=0;i<I;i++)
x[I][j]-y[j]
的平方根,但它让我胡说八道
bool X[I][J]={}; //nodes
bool Y[J]={}; //medians
double denominator=0;
double miu=0;
outFile<< "denominator= " << denominator << endl;
for(i=0;i<I;i++)
for(j=0;j<J;j++)
{
denominator+=sqrt(double (X[i][j]-Y[j]));
}
outFile<< "denominator= " << denominator << endl;
boolx[I][J]={}//节点
bool Y[J]={}//中间带
双分母=0;
双miu=0;
outFile问题是你不能取负数的平方根,你得到的是一个虚数。只需使用abs
首先检索差值的绝对值:
bool X[I][J] = {}; // nodes
bool Y[J] = {}; // medians
double denominator = 0;
double miu = 0;
outFile << "denominator= " << denominator << endl;
for(i = 0; i < I; i++)
for(j = 0; j < J; j++)
{
denominator += sqrt(double (abs(X[i][j]-Y[j])));
}
outFile << "denominator= " << denominator << endl;
boolx[I][J]={};//节点
bool Y[J]={};//中间带
双分母=0;
双miu=0;
outFile这可能意味着在某个点上,X[i][j]-Y[j]
是负数,从sqrt
返回一个NaN(不是数字)
有关NaNs的解释,请参阅
另外,X
和Y
是布尔数组,因此X[i][j]-Y[j]
将始终是1、0或-1,您实际上不需要sqrt
。这就是你想要的吗?看起来你可能在取一个负数的平方根-导致你看到的值,它本质上意味着“不是一个数字”因为X和Y都是布尔值,所以传递给sqrt()的参数有可能是负数。我没有得到与你相同的结果,我得到的结果都是零
两个数组的初始值设定项都应将所有值设置为零,因此减法的平方根也应为零。它们是布尔数组这一事实应该无关紧要,因为这些值将被升级到0.0
有人告诉我,您发布的代码不是导致错误的实际代码。X[I][J]
&Y[J]
已经包含无意义的内容,如果它们是局部变量,并且没有初始化。所以你会收获你所播种的,而这是非理性的价值观。你有任何spl理由去寻找2个布尔值的平方比吗?