负平方根 你怎样取C++中负数的平方根?< BR>我知道它应该返回一个实实在在的复杂的部分,我得到一个NaN?BR>我如何取实部分?< /P> < P>如果你称负数为真,那么它的平方根的实部应该只是< > 0 > /代码>?其中x是一个正数,它只是0+sqrt(x)*i。真正的部分只有0

负平方根 你怎样取C++中负数的平方根?< BR>我知道它应该返回一个实实在在的复杂的部分,我得到一个NaN?BR>我如何取实部分?< /P> < P>如果你称负数为真,那么它的平方根的实部应该只是< > 0 > /代码>?其中x是一个正数,它只是0+sqrt(x)*i。真正的部分只有0,c++,math,sqrt,C++,Math,Sqrt,通常,实际部分是x>0?sqrt(x):0且虚部为x

通常,实际部分是
x>0?sqrt(x):0
且虚部为
x<0?sqrt(x):0

可能是这样的

double negativeNumber = -321;
std::complex<double> number( negativeNumber, 0 );
std::complex<double> result = sqrt( number );
double realpart = result.real();
double negativeEnumber=-321;
std::复数(负枚举数,0);
标准::复杂结果=sqrt(编号);
double realpart=result.real();
#包括
int main()
{
std::complex two_i=std::sqrt(std::complex(-4));
}
或者只是

std::complex<double> sqrt_minus_x(0, std::sqrt(std::abs(x)));
std::复数sqrt_减去_x(0,std::sqrt(std::abs(x));

+1;我很兴奋能发布这个答案,但它已经在这里了!由于乘法中错误的公理,开发人员和物理学家面临着很多问题。。。
std::complex<double> sqrt_minus_x(0, std::sqrt(std::abs(x)));