0

我需要双精度的实部和虚部进行进一步处理,我几乎不知道如何将它们转换为复数。任何输入将不胜感激..

4

2 回答 2

3

Java 没有复数类型。

要存储/表示复数,您必须:

  • 创建自己的类型
  • 使用变量(即 Re、Im)
  • 或使用 3rd 方库

此外,就将双精度数“转换”为复数而言,双精度数显然只能表示复数的虚部或实部。因此,您必须更具体地说明您的意思。如果你想将一个双精度数转换为一个复数的实部等于你的双精度和虚部等于 0。那应该很简单..

如果您想创建自己的类型,它可能如下所示:

class ComplexNumber{
   public ComplexNumber(double re, double im)
   {
       _re = re;
       _im = im;
   }

   private double _re;
   public double getReal(){
      return _re;
   }
   private double _im;
   public double getImaginary(){
       return _im;
   }

   @overrides
   public boolean equals(object other){
       if(other == null)
          return false;
       ComplexNumber n = (ComplexNumber)other;
       return _re.equals(n._re) && _im.equals(n._im);
   }

   @overrides
   public boolean getHashCode(){
       return _re.getHashCode() ^ _im.getHashCode();
   }

   @overrides
   public void toString(){
       return "(" + re.toString() + "," + im.toString() + ")";
   }
}

请注意,此类具有不可变的语义(即,一旦实例化,您就不能修改它的内部状态)。如果您要表示一个复数,这是可取的。然后您可以使用静态方法来加/减/乘/除这些复数。

于 2013-03-09T20:29:31.887 回答
0

我建议您构建一个复数类,因为您可能知道您可以使用两个坐标值在平面上表示复数,因此该类可以为这些值保存两个双精度数。然后就是看看如何除法,乘法,减法和加法,并制作方法除法,乘法,减法,加法,每个方法都将一个复数对象作为参数。

于 2013-03-09T20:31:01.557 回答