# ComplexComplexComplexComplex Struct

## 定義

``public value class Complex : IEquatable<System::Numerics::Complex>, IFormattable``
``````[System.Serializable]
public struct Complex : IEquatable<System.Numerics.Complex>, IFormattable``````
``````type Complex = struct
interface IFormattable``````
``````Public Structure Complex
Implements IEquatable(Of Complex), IFormattable``````

ComplexComplexComplexComplex

## 備註

Complex型別在具現化和操作複數時, 會使用笛卡座標系統 (實數、虛數)。The Complex type uses the Cartesian coordinate system (real, imaginary) when instantiating and manipulating complex numbers. 複數可以表示為二維座標系統中的一個點, 也就是所謂的複雜平面。A complex number can be represented as a point in a two-dimensional coordinate system, which is known as the complex plane. 複數的實數部分位於 X 軸 (水準軸) 上, 而虛數部分位於 y 軸 (垂直軸) 上。The real part of the complex number is positioned on the x-axis (the horizontal axis), and the imaginary part is positioned on the y-axis (the vertical axis).

• 其大小, 也就是原點 (也就是0、0或 X 軸與 y 軸相交的點) 的距離。Its magnitude, which is the distance of the point from the origin (that is, 0,0, or the point at which the x-axis and the y-axis intersect).

• 其階段, 這是實際軸和從原點繪製到點之間的線條之間的角度。Its phase, which is the angle between the real axis and the line drawn from the origin to the point.

### 具現化複數Instantiating a Complex Number

• 藉由將Double兩個值傳遞至其函式。By passing two Double values to its constructor. 第一個值代表複數的實數部分, 而第二個值表示其虛數部分。The first value represents the real part of the complex number, and the second value represents its imaginary part. 這些值代表在二維笛卡座標系統中複數的位置。These values represent the position of the complex number in the two-dimensional Cartesian coordinate system.

• 藉由呼叫靜態 (`Shared`在 Visual Basic 中Complex.FromPolarCoordinates ) 方法, 從其極座標建立複數。By calling the static (`Shared` in Visual Basic) Complex.FromPolarCoordinates method to create a complex number from its polar coordinates.

• 藉由將ByteSByte Int16UInt32 Complex 、、、、、、或Double值指派給物件。 UInt16 Int32 Int64 UInt64 SingleBy assigning a Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, or Double value to a Complex object. 值會變成複數的實數部分, 而其虛數部分等於0。The value becomes the real part of the complex number, and its imaginary part equals 0.

• 藉由轉換 ( C#在中) 或將Decimal ComplexBigInteger值轉換為物件 (Visual Basic)。By casting (in C#) or converting (in Visual Basic) a Decimal or BigInteger value to a Complex object. 值會變成複數的實數部分, 而其虛數部分等於0。The value becomes the real part of the complex number, and its imaginary part equals 0.

• 藉由將方法或運算子所傳回的複數指派給Complex物件。By assigning the complex number that is returned by a method or operator to a Complex object. 例如, Complex.Add是一種靜態方法, 它會傳回兩個複數總和的複數, Complex.Addition而運算子會加入兩個複數, 並傳回結果。For example, Complex.Add is a static method that returns a complex number that is the sum of two complex numbers, and the Complex.Addition operator adds two complex numbers and returns the result.

``````using System;
using System.Numerics;

public class Example
{
public static void Main()
{
// Create a complex number by calling its class constructor.
Complex c1 = new Complex(12, 6);
Console.WriteLine(c1);

// Assign a Double to a complex number.
Complex c2 = 3.14;
Console.WriteLine(c2);

// Cast a Decimal to a complex number.
Complex c3 = (Complex) 12.3m;
Console.WriteLine(c3);

// Assign the return value of a method to a Complex variable.
Complex c4 = Complex.Pow(Complex.One, -1);
Console.WriteLine(c4);

// Assign the value returned by an operator to a Complex variable.
Complex c5 = Complex.One + Complex.One;
Console.WriteLine(c5);

// Instantiate a complex number from its polar coordinates.
Complex c6 = Complex.FromPolarCoordinates(10, .524);
Console.WriteLine(c6);
}
}
// The example displays the following output:
//       (12, 6)
//       (3.14, 0)
//       (12.3, 0)
//       (1, 0)
//       (2, 0)
//       (8.65824721882145, 5.00347430269914)
``````
``````Imports System.Numerics

Module Example
Public Sub Main()
' Create a complex number by calling its class constructor.
Dim c1 As New Complex(12, 6)
Console.WriteLine(c1)

' Assign a Double to a complex number.
Dim c2 As Complex = 3.14
Console.WriteLine(c2)

' Cast a Decimal to a complex number.
Dim c3 As Complex = CType(12.3d, Complex)
Console.WriteLine(c3)

' Assign the return value of a method to a Complex variable.
Dim c4 As Complex = Complex.Pow(Complex.One, -1)
Console.WriteLine(c4)

' Assign the value returned by an operator to a Complex variable.
Dim c5 As Complex = Complex.One + Complex.One
Console.WriteLine(c5)

' Instantiate a complex number from its polar coordinates.
Dim c6 As Complex = Complex.FromPolarCoordinates(10, .524)
Console.WriteLine(c6)
End Sub
End Module
' The example displays the following output:
'       (12, 6)
'       (3.14, 0)
'       (12.3000001907349, 0)
'       (1, 0)
'       (2, 0)
'       (8.65824721882145, 5.00347430269914)
``````

### 具有複數的作業Operations with Complex Numbers

.NET Framework Complex中的結構包含提供下列功能的成員:The Complex structure in the .NET Framework includes members that provide the following functionality:

• 用來比較兩個複數的方法, 以判斷它們是否相等。Methods to compare two complex numbers to determine whether they are equal.

• 用來對複數執行算數運算的運算子。Operators to perform arithmetic operations on complex numbers. Complex運算子可讓您使用複數來執行加法、減法、乘法、除法和一元否定。Complex operators enable you to perform addition, subtraction, multiplication, division, and unary negation with complex numbers.

• 對複數執行其他數值運算的方法。Methods to perform other numerical operations on complex numbers. 除了四個基本算數運算以外, 您還可以將複數乘到指定的乘冪, 尋找複數的平方根, 並取得複數的絕對值。In addition to the four basic arithmetic operations, you can raise a complex number to a specified power, find the square root of a complex number, and get the absolute value of a complex number.

• 對複數執行三角函數運算的方法。Methods to perform trigonometric operations on complex numbers. 例如, 您可以計算以複數表示之角度的正切函數。For example, you can calculate the tangent of an angle represented by a complex number.

### 有效位數和複數Precision and Complex Numbers

``````Complex value = new Complex(Double.MinValue/2, Double.MinValue/2);
Complex value2 = Complex.Exp(Complex.Log(value));
Console.WriteLine("{0} \n{1} \nEqual: {2}", value, value2,
value == value2);
// The example displays the following output:
//    (-8.98846567431158E+307, -8.98846567431158E+307)
//    (-8.98846567431161E+307, -8.98846567431161E+307)
//    Equal: False
``````
``````Dim value As New Complex(Double.MinValue/2, Double.MinValue/2)
Dim value2 As Complex = Complex.Exp(Complex.Log(value))
Console.WriteLine("{0} {3}{1} {3}Equal: {2}", value, value2,
value = value2,
vbCrLf)
' The example displays the following output:
'    (-8.98846567431158E+307, -8.98846567431158E+307)
'    (-8.98846567431161E+307, -8.98846567431161E+307)
'    Equal: False
``````

``````Complex minusOne = new Complex(-1, 0);
Console.WriteLine(Complex.Sqrt(minusOne));
// The example displays the following output:
//    (6.12303176911189E-17, 1) on 32-bit systems.
//    (6.12323399573677E-17,1) on IA64 systems.
``````
``````Dim minusOne As New Complex(-1, 0)
Console.WriteLine(Complex.Sqrt(minusOne))
' The example displays the following output:
'    (6.12303176911189E-17, 1) on 32-bit systems.
'    (6.12323399573677E-17,1) on IA64 systems.
``````

### 複數、無限大和 NaNComplex Numbers, Infinity, and NaN

``````using System;
using System.Numerics;

public class Example
{
public static void Main()
{
Complex c1 = new Complex(Double.MaxValue / 2, Double.MaxValue /2);

Complex c2 = c1 / Complex.Zero;
Console.WriteLine(c2.ToString());
c2 = c2 * new Complex(1.5, 1.5);
Console.WriteLine(c2.ToString());
Console.WriteLine();

Complex c3 = c1 * new Complex(2.5, 3.5);
Console.WriteLine(c3.ToString());
c3 = c3 + new Complex(Double.MinValue / 2, Double.MaxValue / 2);
Console.WriteLine(c3);
}
}
// The example displays the following output:
//       (NaN, NaN)
//       (NaN, NaN)
//       (NaN, Infinity)
//       (NaN, Infinity)
``````
``````Imports System.Numerics

Module Example
Public Sub Main()
Dim c1 As Complex = New Complex(Double.MaxValue / 2, Double.MaxValue /2)

Dim c2 As Complex = c1 / Complex.Zero
Console.WriteLine(c2.ToString())
c2 = c2 * New Complex(1.5, 1.5)
Console.WriteLine(c2.ToString())
Console.WriteLine()

Dim c3 As Complex = c1 * New Complex(2.5, 3.5)
Console.WriteLine(c3.ToString())
c3 = c3 + New Complex(Double.MinValue / 2, Double.MaxValue / 2)
Console.WriteLine(c3)
End Sub
End Module
' The example displays the following output:
'       (NaN, NaN)
'       (NaN, NaN)
'
'       (NaN, Infinity)
'       (NaN, Infinity)
``````

### 格式化複數Formatting a Complex Number

``````using System;
using System.Numerics;

public class ComplexFormatter :IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
return this;
else
return null;
}

public string Format(string format, object arg,
IFormatProvider provider)
{
if (arg is Complex)
{
Complex c1 = (Complex) arg;
// Check if the format string has a precision specifier.
int precision;
string fmtString = String.Empty;
if (format.Length > 1) {
try {
precision = Int32.Parse(format.Substring(1));
}
catch (FormatException) {
precision = 0;
}
fmtString = "N" + precision.ToString();
}
if (format.Substring(0, 1).Equals("I", StringComparison.OrdinalIgnoreCase))
return c1.Real.ToString(fmtString) + " + " + c1.Imaginary.ToString(fmtString) + "i";
else if (format.Substring(0, 1).Equals("J", StringComparison.OrdinalIgnoreCase))
return c1.Real.ToString(fmtString) + " + " + c1.Imaginary.ToString(fmtString) + "j";
else
return c1.ToString(format, provider);
}
else
{
if (arg is IFormattable)
return ((IFormattable) arg).ToString(format, provider);
else if (arg != null)
return arg.ToString();
else
return String.Empty;
}
}
}
``````
``````Imports System.Numerics

Public Class ComplexFormatter
Implements IFormatProvider, ICustomFormatter

Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(ICustomFormatter) Then
Return Me
Else
Return Nothing
End If
End Function

Public Function Format(fmt As String, arg As Object,
provider As IFormatProvider) As String _
Implements ICustomFormatter.Format
If TypeOf arg Is Complex Then
Dim c1 As Complex = DirectCast(arg, Complex)
' Check if the format string has a precision specifier.
Dim precision As Integer
Dim fmtString As String = String.Empty
If fmt.Length > 1 Then
Try
precision = Int32.Parse(fmt.Substring(1))
Catch e As FormatException
precision = 0
End Try
fmtString = "N" + precision.ToString()
End If
If fmt.Substring(0, 1).Equals("I", StringComparison.OrdinalIgnoreCase) Then
Return c1.Real.ToString(fmtString) + " + " + c1.Imaginary.ToString(fmtString) + "i"
ElseIf fmt.Substring(0, 1).Equals("J", StringComparison.OrdinalIgnoreCase) Then
Return c1.Real.ToString(fmtString) + " + " + c1.Imaginary.ToString(fmtString) + "j"
Else
Return c1.ToString(fmt, provider)
End If
Else
If Typeof arg Is IFormattable Then
Return DirectCast(arg, IFormattable).ToString(fmt, provider)
ElseIf arg IsNot Nothing Then
Return arg.ToString()
Else
Return String.Empty
End If
End If
End Function
End Class
``````

``````public class Example
{
public static void Main()
{
Complex c1 = new Complex(12.1, 15.4);
Console.WriteLine("Formatting with ToString():       " +
c1.ToString());
Console.WriteLine("Formatting with ToString(format): " +
c1.ToString("N2"));
Console.WriteLine("Custom formatting with I0:        " +
String.Format(new ComplexFormatter(), "{0:I0}", c1));
Console.WriteLine("Custom formatting with J3:        " +
String.Format(new ComplexFormatter(), "{0:J3}", c1));
}
}
// The example displays the following output:
//    Formatting with ToString():       (12.1, 15.4)
//    Formatting with ToString(format): (12.10, 15.40)
//    Custom formatting with I0:        12 + 15i
//    Custom formatting with J3:        12.100 + 15.400j
``````
``````Module Example
Public Sub Main()
Dim c1 As Complex = New Complex(12.1, 15.4)
Console.WriteLine("Formatting with ToString():       " +
c1.ToString())
Console.WriteLine("Formatting with ToString(format): " +
c1.ToString("N2"))
Console.WriteLine("Custom formatting with I0:        " +
String.Format(New ComplexFormatter(), "{0:I0}", c1))
Console.WriteLine("Custom formatting with J3:        " +
String.Format(New ComplexFormatter(), "{0:J3}", c1))
End Sub
End Module
' The example displays the following output:
'    Formatting with ToString():       (12.1, 15.4)
'    Formatting with ToString(format): (12.10, 15.40)
'    Custom formatting with I0:        12 + 15i
'    Custom formatting with J3:        12.100 + 15.400j
``````

## 建構函式

 Complex(Double, Double) Complex(Double, Double) Complex(Double, Double) Complex(Double, Double) 使用指定的實數和虛數，初始化 Complex 結構的新執行個體。Initializes a new instance of the Complex structure using the specified real and imaginary values.

## 欄位

 ImaginaryOne ImaginaryOne ImaginaryOne ImaginaryOne 在實數等於零且虛數等於一條件下，傳回新 Complex 執行個體。Returns a new Complex instance with a real number equal to zero and an imaginary number equal to one. Infinity Infinity Infinity Infinity 將無限大表示為複數。Represents infinity as a complex number. NaN NaN NaN NaN 表示不是數字 (NaN) 的複雜執行個體。Represents a complex instance that is not a number (NaN). One One One One 在實數等於一且虛數等於零條件下，傳回新 Complex 執行個體。Returns a new Complex instance with a real number equal to one and an imaginary number equal to zero. Zero Zero Zero Zero 在實數等於零且虛數等於零條件下，傳回新 Complex 執行個體。Returns a new Complex instance with a real number equal to zero and an imaginary number equal to zero.

## 屬性

 Imaginary Imaginary Imaginary Imaginary 取得目前 Complex 物件的虛數部分。Gets the imaginary component of the current Complex object. Magnitude Magnitude Magnitude Magnitude 取得複數的範圍 (或絕對值)。Gets the magnitude (or absolute value) of a complex number. Phase Phase Phase Phase 取得複數的階段。Gets the phase of a complex number. Real Real Real Real 取得目前 Complex 物件的實數部分。Gets the real component of the current Complex object.

## 方法

 Abs(Complex) Abs(Complex) Abs(Complex) Abs(Complex) 取得複數的絕對值 (或範圍)。Gets the absolute value (or magnitude) of a complex number. Acos(Complex) Acos(Complex) Acos(Complex) Acos(Complex) 傳回角度，這個角度是指定之複數的反餘弦值。Returns the angle that is the arc cosine of the specified complex number. Add(Double, Complex) Add(Double, Complex) Add(Double, Complex) Add(Double, Complex) 將雙精確度實數與複數相加，並傳回結果。Adds a double-precision real number to a complex number and returns the result. Add(Complex, Double) Add(Complex, Double) Add(Complex, Double) Add(Complex, Double) 將複數與雙精確度實數相加，並傳回結果。Adds a complex number to a double-precision real number and returns the result. Add(Complex, Complex) Add(Complex, Complex) Add(Complex, Complex) Add(Complex, Complex) 兩個複數相加，並傳回結果。Adds two complex numbers and returns the result. Asin(Complex) Asin(Complex) Asin(Complex) Asin(Complex) 傳回角度，這個角度是指定之複數的反正弦值。Returns the angle that is the arc sine of the specified complex number. Atan(Complex) Atan(Complex) Atan(Complex) Atan(Complex) 傳回角度，這個角度是指定之複數的反正切值。Returns the angle that is the arc tangent of the specified complex number. Conjugate(Complex) Conjugate(Complex) Conjugate(Complex) Conjugate(Complex) 計算複數的共軛，並傳回結果。Computes the conjugate of a complex number and returns the result. Cos(Complex) Cos(Complex) Cos(Complex) Cos(Complex) 傳回指定複數的餘弦函數。Returns the cosine of the specified complex number. Cosh(Complex) Cosh(Complex) Cosh(Complex) Cosh(Complex) 傳回指定複數的雙曲餘弦。Returns the hyperbolic cosine of the specified complex number. Divide(Double, Complex) Divide(Double, Complex) Divide(Double, Complex) Divide(Double, Complex) 將一個雙精確度實數除以複數，並傳回結果。Divides one double-precision real number by a complex number and returns the result. Divide(Complex, Double) Divide(Complex, Double) Divide(Complex, Double) Divide(Complex, Double) 將一個複數除以雙精確度實數，並傳回結果。Divides one complex number by a double-precision real number and returns the result. Divide(Complex, Complex) Divide(Complex, Complex) Divide(Complex, Complex) Divide(Complex, Complex) 以某複數除以另一個複數，並傳回結果。Divides one complex number by another and returns the result. Equals(Complex) Equals(Complex) Equals(Complex) Equals(Complex) 傳回值，這個值指出目前執行個體和指定複數是否有相同的值。Returns a value that indicates whether the current instance and a specified complex number have the same value. Equals(Object) Equals(Object) Equals(Object) Equals(Object) 傳回值，這個值表示目前執行個體與指定的物件是否有相同的值。Returns a value that indicates whether the current instance and a specified object have the same value. Exp(Complex) Exp(Complex) Exp(Complex) Exp(Complex) 傳回乘至複數指定乘冪的 `e`。Returns `e` raised to the power specified by a complex number. FromPolarCoordinates(Double, Double) FromPolarCoordinates(Double, Double) FromPolarCoordinates(Double, Double) FromPolarCoordinates(Double, Double) 由點的極座標建立複數。Creates a complex number from a point's polar coordinates. GetHashCode() GetHashCode() GetHashCode() GetHashCode() 傳回目前 Complex 物件的雜湊碼。Returns the hash code for the current Complex object. IsFinite(Complex) IsFinite(Complex) IsFinite(Complex) IsFinite(Complex) 判斷指定的複數是否為有限大。Determines whether the specified complex number is finite. IsInfinity(Complex) IsInfinity(Complex) IsInfinity(Complex) IsInfinity(Complex) 傳回值，指出指定的複數是否計算結果為無限大。Returns a value indicating whether the specified complex number evaluates to infinity. IsNaN(Complex) IsNaN(Complex) IsNaN(Complex) IsNaN(Complex) 傳回值，該值表示指定的複雜執行個體是否不是數字 (NaN)。Returns a value that indicates whether the specified complex instance is not a number (NaN). Log(Complex) Log(Complex) Log(Complex) Log(Complex) 傳回指定複數的自然 (底數 `e`) 對數。Returns the natural (base `e`) logarithm of a specified complex number. Log(Complex, Double) Log(Complex, Double) Log(Complex, Double) Log(Complex, Double) 傳回指定底數中指定複數的對數。Returns the logarithm of a specified complex number in a specified base. Log10(Complex) Log10(Complex) Log10(Complex) Log10(Complex) 傳回指定複數底數為 10 的對數。Returns the base-10 logarithm of a specified complex number. Multiply(Complex, Complex) Multiply(Complex, Complex) Multiply(Complex, Complex) Multiply(Complex, Complex) 傳回兩個複數的乘積。Returns the product of two complex numbers. Multiply(Double, Complex) Multiply(Double, Complex) Multiply(Double, Complex) Multiply(Double, Complex) 傳回雙精確度實數和複數的乘積。Returns the product of a double-precision real number and a complex number. Multiply(Complex, Double) Multiply(Complex, Double) Multiply(Complex, Double) Multiply(Complex, Double) 傳回複數和雙精確度實數的乘積。Returns the product of a complex number and a double-precision real number. Negate(Complex) Negate(Complex) Negate(Complex) Negate(Complex) 傳回指定之複數的加法反元素。Returns the additive inverse of a specified complex number. Pow(Complex, Double) Pow(Complex, Double) Pow(Complex, Double) Pow(Complex, Double) 傳回指定之複數自乘至雙精確度浮點數指定之乘冪的結果。Returns a specified complex number raised to a power specified by a double-precision floating-point number. Pow(Complex, Complex) Pow(Complex, Complex) Pow(Complex, Complex) Pow(Complex, Complex) 傳回指定的複數自乘至複數指定之乘冪的結果。Returns a specified complex number raised to a power specified by a complex number. Reciprocal(Complex) Reciprocal(Complex) Reciprocal(Complex) Reciprocal(Complex) 傳回複數的乘法逆元。Returns the multiplicative inverse of a complex number. Sin(Complex) Sin(Complex) Sin(Complex) Sin(Complex) 傳回指定複數的正弦函數。Returns the sine of the specified complex number. Sinh(Complex) Sinh(Complex) Sinh(Complex) Sinh(Complex) 傳回指定複數的雙曲正弦。Returns the hyperbolic sine of the specified complex number. Sqrt(Complex) Sqrt(Complex) Sqrt(Complex) Sqrt(Complex) 傳回指定複數的平方根。Returns the square root of a specified complex number. Subtract(Double, Complex) Subtract(Double, Complex) Subtract(Double, Complex) Subtract(Double, Complex) 從雙精確度實數減去一個複數，並傳回結果。Subtracts one complex number from a double-precision real number and returns the result. Subtract(Complex, Double) Subtract(Complex, Double) Subtract(Complex, Double) Subtract(Complex, Double) 從複數減去一個雙精確度實數，並傳回結果。Subtracts one double-precision real number from a complex number and returns the result. Subtract(Complex, Complex) Subtract(Complex, Complex) Subtract(Complex, Complex) Subtract(Complex, Complex) 從某複數減去另一個複數，並傳回結果。Subtracts one complex number from another and returns the result. Tan(Complex) Tan(Complex) Tan(Complex) Tan(Complex) 傳回指定複數的正切函數。Returns the tangent of the specified complex number. Tanh(Complex) Tanh(Complex) Tanh(Complex) Tanh(Complex) 傳回指定複數的雙曲正切。Returns the hyperbolic tangent of the specified complex number. ToString() ToString() ToString() ToString() 將目前複數的值轉換為直角座標形式 (Cartesian form) 的相等字串表示。Converts the value of the current complex number to its equivalent string representation in Cartesian form. ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) ToString(IFormatProvider) 使用指定文化特性格式資訊，將目前的複數值轉換為採取直角座標形式 (Cartesian form) 的相等字串表示。Converts the value of the current complex number to its equivalent string representation in Cartesian form by using the specified culture-specific formatting information. ToString(String) ToString(String) ToString(String) ToString(String) 使用實數及虛數格式的指定格式，將目前的複數值轉換為採取直角座標形式 (Cartesian form) 的相等字串表示。Converts the value of the current complex number to its equivalent string representation in Cartesian form by using the specified format for its real and imaginary parts. ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider) ToString(String, IFormatProvider) 使用指定格式以及文化特性格式資訊來組成實數及虛數，將目前的複數值轉換為採取直角座標形式 (Cartesian form) 的相等字串表示。Converts the value of the current complex number to its equivalent string representation in Cartesian form by using the specified format and culture-specific format information for its real and imaginary parts.