# Complex 結構

## 定義

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

Complex

## 備註

• 它的範圍，也就是原點與原點之間的距離 (也就是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

• 藉由將兩個值傳遞至它的函式 DoubleBy 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.

• 藉由將、、、、、、、、 Byte SByte Int16 UInt16 Int32 UInt32 Int64 UInt64 SingleDouble 值指派給 Complex 物件。By 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 # ) 或將 Visual Basic) 或值中的 (轉換 Decimal BigIntegerComplex 物件。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

Complex.NET Framework 中的結構包含提供下列功能的成員：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 結構的新執行個體。Initializes a new instance of the Complex structure using the specified real and imaginary values.

## 欄位

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

## 屬性

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

## 方法

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

## 運算子

 將兩個複數相加。Adds two complex numbers. 將複數與雙精確度實數相加。Adds a complex number to a double-precision real number. 將雙精確度實數與複數相加。Adds a double-precision real number to a complex number. 以某指定複數除以另一個指定複數。Divides a specified complex number by another specified complex number. 將指定的複數除以指定的雙精確度實數。Divides a specified complex number by a specified double-precision real number. 將指定的雙精確度實數除以指定的複數。Divides a specified double-precision real number by a specified complex number. 傳回值，這個值表示兩個複數是否相等。Returns a value that indicates whether two complex numbers are equal. 定義從 BigInteger 值到複數的明確轉換。Defines an explicit conversion of a BigInteger value to a complex number. 定義從 Decimal 值到複數的明確轉換。Defines an explicit conversion of a Decimal value to a complex number. 定義從不帶正負號的位元組到複數的隱含轉換。Defines an implicit conversion of an unsigned byte to a complex number. 定義從雙精確度浮點數到複數的隱含轉換。Defines an implicit conversion of a double-precision floating-point number to a complex number. 定義從 16 位元帶正負號整數到複數的隱含轉換。Defines an implicit conversion of a 16-bit signed integer to a complex number. 定義從 32 位元帶正負號整數到複數的隱含轉換。Defines an implicit conversion of a 32-bit signed integer to a complex number. 定義從 64 位元帶正負號整數到複數的隱含轉換。Defines an implicit conversion of a 64-bit signed integer to a complex number. 定義從帶正負號的位元組到複數的隱含轉換。Defines an implicit conversion of a signed byte to a complex number. 此應用程式開發介面不符合 CLS 標準。This API is not CLS-compliant. 定義從單精確度浮點數到複數的隱含轉換。Defines an implicit conversion of a single-precision floating-point number to a complex number. 定義從 16 位元不帶正負號整數到複數的隱含轉換。Defines an implicit conversion of a 16-bit unsigned integer to a complex number. 此應用程式開發介面不符合 CLS 標準。This API is not CLS-compliant. 定義從 32 位元不帶正負號整數到複數的隱含轉換。Defines an implicit conversion of a 32-bit unsigned integer to a complex number. 此應用程式開發介面不符合 CLS 標準。This API is not CLS-compliant. 定義從 64 位元不帶正負號整數到複數的隱含轉換。Defines an implicit conversion of a 64-bit unsigned integer to a complex number. 此應用程式開發介面不符合 CLS 標準。This API is not CLS-compliant. 傳回值，這個值表示兩個複數是否不相等。Returns a value that indicates whether two complex numbers are not equal. 乘上兩個指定的複數。Multiplies two specified complex numbers. 將指定的複數乘以指定的雙精確度實數。Multiplies the specified complex number by a specified double-precision real number. 將指定的雙精確度實數乘以指定的複數。Multiplies a specified double-precision real number by a specified complex number. 從另一個複數減去一個複數。Subtracts a complex number from another complex number. 從複數減去一個雙精確度實數。Subtracts a double-precision real number from a complex number. 從雙精確度實數減去複數。Subtracts a complex number from a double-precision real number. 傳回指定之複數的加法反元素。Returns the additive inverse of a specified complex number.