如何在 C++ 中取负数的平方根?
我知道它应该返回一个真实而复杂的部分,我得到一个 NaN?
我如何采取真正的部分?
问问题
13329 次
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 回答