繁体   English   中英

C ++负平方根

[英]c++ negative square root

我的目标是在平方根为负的情况下打印*** 但我想不出一种方法来将默认nan文本更改为***

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

那么,我应该在if语句中写些什么才能使其成为可能? 也许还有另一种方法来检查y是否为nan然后打印*

如何检查平方根函数的负输入

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

在C ++中测试NaN非常棘手 只需使用if语句来避免在sqrt的参数为负数时对其求值。

nan数不等于任何东西,甚至不等于其本身。
您可以简单地测试一下if( y != y )

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

平方根永远不会为负。 但这可能很复杂。 参见https://en.wikipedia.org/wiki/Complex_number

想法是将一组数字扩展到所谓的复平面中 ,该复平面包含一个特殊数字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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM