5

如何在 C++ 中取负数的平方根?
我知道它应该返回一个真实而复杂的部分,我得到一个 NaN?
我如何采取真正的部分?

4

4 回答 4

7
#include <complex>

int main()
{
    std::complex<double> two_i = std::sqrt(std::complex<double>(-4));
}

要不就

std::complex<double> sqrt_minus_x(0, std::sqrt(std::abs(x)));
于 2011-08-12T15:59:44.413 回答
5

sqrt(-x)其中 x 是一个正数很简单0 + sqrt(x)*i。实部只有 0。

一般来说,实部是x > 0 ? sqrt(x) : 0,虚部是x < 0 ? sqrt(x) : 0

于 2011-08-12T15:58:13.853 回答
3

如果你所说的负数是实数,那么它的平方根的实部应该是0?

于 2011-08-12T15:55:33.043 回答
0

也许是这样的

double negativeNumber = -321;
std::complex<double> number( negativeNumber, 0 );
std::complex<double> result = sqrt( number );
double realpart = result.real();
于 2011-08-12T15:59:09.733 回答