提问者:小点点

除复数-条件


我有个问题。 我用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)???


共2个答案

匿名用户

有没有我们不能除复数的情况?

如果您想创建自己的类来处理复数,而不是使用std::complex,请尝试使它的行为像用户期望的那样。 即:

  • n/dn!=0d==0给出inf,inf(也可能是-inf,-inf)。
  • n/d当两者都为0时,给出nan,nan(也可能是-nan,-nan)。

匿名用户

复数除法没有人为的额外规则。 您所使用的表达式只是如何定义复数的除法,而在计算实数时唯一可能出错的是0分母,即y.real*y.real+y.imag*y.imag==0,这正是y.real==0y.imag==0时的情况。