[英]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.