C++ c++;负平方根

C++ c++;负平方根,c++,for-loop,sqrt,C++,For Loop,Sqrt,如果平方根为负,我的目标是打印***。但是我想不出一种方法来将默认的nan文本更改为*** for(int i=x1;i<=x2;i++){ double y = sqrt(pow(i,2)+3*i-500); if(y = ?){ outFile << "***"; } for(int i=x1;i一个nan数不等于任何东西,甚至不等于它本身。 您可以通过简单的测试来查看(y!=y)一个nan数是否不等于任何东西,甚至不等于它本身。 您

如果平方根为负,我的目标是打印
***
。但是我想不出一种方法来将默认的
nan
文本更改为
***

for(int i=x1;i<=x2;i++){
   double y = sqrt(pow(i,2)+3*i-500);
    if(y = ?){
        outFile << "***";
    }

for(int i=x1;i一个nan数不等于任何东西,甚至不等于它本身。

您可以通过简单的测试来查看(y!=y)
一个nan数是否不等于任何东西,甚至不等于它本身。

您可以通过简单的测试查看if
if(y!=y)<楠> C++中的测试是:使用C++代码>如果< <代码> >语句,如果其参数是否定的,则避免对<代码> Sqrt < /C>进行评估。

< C++中的楠测试是:只使用<代码> < < /Cord>语句,以避免评估<代码> Sqrt< /C>如果它的参数为负。< /P> < P>如何检查对S的负输入平方根函数

for (int i = x1; i <= x2; ++i)
{
    double x = pow(i, 2) + 3*i - 500;
    if (x < 0)
    {
        outFile << "***";
    }
    else
    {
        outFile << sqrt(x);
    }
}

for(int i=x1;i检查平方根函数的负输入如何

for (int i = x1; i <= x2; ++i)
{
    double x = pow(i, 2) + 3*i - 500;
    if (x < 0)
    {
        outFile << "***";
    }
    else
    {
        outFile << sqrt(x);
    }
}
for(int i=x1;i
我的目标是在平方根为负数时打印*。但我想不出一种方法将默认的nan文本更改为*

平方根永远不是负的。但它可能很复杂。请参阅

其思想是将数字集扩展到所谓的复平面,复平面包含一个特殊的数字i,该数字定义为i²=-1。这使我们能够概括平方根:

sqrt(ab)=sqrt(a)sqrt(b)

所以我们可以将sqrt(-a)分解为sqrt(-1)sqrt(a)=i sqrt(a)

这允许我们将您的程序更改为

for(int i=x1;i<=x2;i++){
    double X = pow(i,2)+3*i-500;
    double y = sqrt(abs(x));
    if(X < 0){
        outFile << y << "i";
    } else {
        outFile << y;
    }
}
for(int i=x1;i
我的目标是在平方根为负数时打印*。但我想不出一种方法将默认的nan文本更改为*

平方根永远不是负的。但它可能很复杂。请参阅

其思想是将数字集扩展到所谓的复平面,复平面包含一个特殊的数字i,该数字定义为i²=-1。这使我们能够概括平方根:

sqrt(ab)=sqrt(a)sqrt(b)

所以我们可以将sqrt(-a)分解为sqrt(-1)sqrt(a)=i sqrt(a)

这允许我们将您的程序更改为

for(int i=x1;i<=x2;i++){
    double X = pow(i,2)+3*i-500;
    double y = sqrt(abs(x));
    if(X < 0){
        outFile << y << "i";
    } else {
        outFile << y;
    }
}

用于(int i=x1;i可能的重复项没有负平方根这样的东西。不要对我复杂。@fred可能的重复项没有负平方根这样的东西。不要对我复杂@fred@RnD:这不是100%可靠,请检查链接副本中的Alf答案以了解更多详细信息。@RnD:这不是100%可靠,请检查Alf'有关更多详细信息,请参阅链接副本中的答案。