有没有办法将一个数字(在我的情况下为double)转换为java中的复数?

时间:2013-03-09 20:27:44

标签: java complex-numbers data-conversion

我需要double的实部和虚部用于进一步处理,我几乎不知道如何将它们转换为复数。任何意见都会非常感激......

2 个答案:

答案 0 :(得分:3)

Java没有复数类型。

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

  • 创建自己的类型
  • 使用变量(即Re,Im)
  • 或使用第三方图书馆

此外,只要将double转换为Complex数,double实际上只能表示复数的虚数或实数。因此,您必须更具体地了解您的意思。如果你想将double转换为复数的实部,等于你的双和虚部等于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() + ")";
   }
}

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

答案 1 :(得分:0)

我建议你构建一个复数类,因为你可能知道你可以使用两个坐标值在一个平面上表示复数,所以这个类可以容纳两个双精度数。然后只需查看如何划分,乘法,减去和添加复数,并使方法分割,乘法,减法,相加,每个方法都将复数对象作为参数。