我有个问题。 我用C++写了运算符,它是对复数进行除法的。
friend const Comp operator/(const Comp& x, const Comp& y)
{
Comp temp;
temp.real = ((x.real * y.real) + (x.imag * y.imag))/(y.real*y.real + y.imag*y.imag);
temp.imag = ((x.imag * y.real) - (x.real * y.imag))/(y.real*y.real + y.imag*y.imag);
return temp;
}
我在想一件事。 有没有我们不能除复数的情况? 如果是,我可能会使用std:cerr,因为在正常除法中,分频器必须是!=0,所以这里这个部分必须是!=0(y.realy.real+y.imagy.imag)???
有没有我们不能除复数的情况?
如果您想创建自己的类来处理复数,而不是使用std::complex
,请尝试使它的行为像用户期望的那样。 即:
n/d
当n!=0
且d==0
给出inf,inf
(也可能是-inf,-inf
)。n/d
当两者都为0时,给出nan,nan
(也可能是-nan,-nan
)。
复数除法没有人为的额外规则。 您所使用的表达式只是如何定义复数的除法,而在计算实数时唯一可能出错的是0
分母,即y.real*y.real+y.imag*y.imag==0
,这正是y.real==0
和y.imag==0
时的情况。