BigInteger コンストラクター

定義

BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure.

オーバーロード

BigInteger(Byte[])

バイト配列の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using the values in a byte array.

BigInteger(Decimal)

BigInteger 値を使用して、Decimal 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a Decimal value.

BigInteger(Double)

倍精度浮動小数点値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a double-precision floating-point value.

BigInteger(Int32)

32 ビット符号付き整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a 32-bit signed integer value.

BigInteger(Int64)

64 ビット符号付き整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a 64-bit signed integer value.

BigInteger(Single)

単精度浮動小数点値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a single-precision floating-point value.

BigInteger(UInt32)

32 ビット符号なし整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using an unsigned 32-bit integer value.

BigInteger(UInt64)

64 ビット符号なし整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure with an unsigned 64-bit integer value.

BigInteger(ReadOnlySpan<Byte>, Boolean, Boolean)

バイトの読み取り専用スパンを使用して、BigInteger 構造体の新しいインスタンスを初期化します。任意で、符号付きエンコードとエンディアンのバイト順を示します。Initializes a new instance of the BigInteger structure using the values in a read-only span of bytes, and optionally indicating the signing encoding and the endianness byte order.

BigInteger(Byte[])

重要

この API は CLS 準拠ではありません。

バイト配列の値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using the values in a byte array.

public:
 BigInteger(cli::array <System::Byte> ^ value);
[System.CLSCompliant(false)]
public BigInteger (byte[] value);
public BigInteger (byte[] value);
new System.Numerics.BigInteger : byte[] -> System.Numerics.BigInteger
Public Sub New (value As Byte())

パラメーター

value
Byte[]

リトル エンディアン順に格納されたバイト値の配列。An array of byte values in little-endian order.

属性

例外

valuenull です。value is null.

次の例では、値が {5, 4, 3, 2, 1} である5要素のバイト配列から BigInteger オブジェクトをインスタンス化します。The following example instantiates a BigInteger object from a 5-element byte array whose value is {5, 4, 3, 2, 1}. 次に、10進数と16進数の両方で表される BigInteger 値がコンソールに表示されます。It then displays the BigInteger value, represented as both decimal and hexadecimal numbers, to the console. 入力配列とテキスト出力の比較により、BigInteger クラスコンストラクターのこのオーバーロードが、値が 4328719365 (または 0x102030405) の BigInteger オブジェクトを作成する理由がわかります。A comparison of the input array with the text output makes it clear why this overload of the BigInteger class constructor creates a BigInteger object whose value is 4328719365 (or 0x102030405). バイト配列の最初の要素である値が5である場合、BigInteger オブジェクトの最下位バイトの値が定義されます。これは、0x05 です。The first element of the byte array, whose value is 5, defines the value of the lowest-order byte of the BigInteger object, which is 0x05. バイト配列の2番目の要素 (値が 4) は、BigInteger オブジェクトの2番目のバイトの値 (0x04 など) を定義します。The second element of the byte array, whose value is 4, defines the value of the second byte of the BigInteger object, which is 0x04, and so on.

byte[] bytes = { 5, 4, 3, 2, 1 };
BigInteger number = new BigInteger(bytes);
Console.WriteLine("The value of number is {0} (or 0x{0:x}).", number); 
// The example displays the following output:
//    The value of number is 4328719365 (or 0x102030405).   
Dim bytes() As Byte = { 5, 4, 3, 2, 1 }
Dim number As New BigInteger(bytes)
Console.WriteLine("The value of number is {0} (or 0x{0:x}).", number) 
' The example displays the following output:
'    The value of number is 4328719365 (or 0x102030405).   

次の例では、正の値と負の BigInteger 値をインスタンス化し、ToByteArray メソッドに渡してから、結果のバイト配列から元の BigInteger 値を復元します。The following example instantiates a positive and a negative BigInteger value, passes them to the ToByteArray method, and then restores the original BigInteger values from the resulting byte array. 2つの値は、同一のバイト配列で表されることに注意してください。Note that the two values are represented by identical byte arrays. これらの違いは、バイト配列の最後の要素の最上位ビットのみです。The only difference between them is in the most significant bit of the last element in the byte array. 配列が負の BigInteger 値から作成された場合、このビットは (バイトの値は 0xFF) に設定されます。This bit is set (the value of the byte is 0xFF) if the array is created from a negative BigInteger value. 配列が正の BigInteger 値から作成された場合、ビットは設定されません (バイトの値はゼロです)。The bit is not set (the value of the byte is zero), if the array is created from a positive BigInteger value.

// Instantiate BigInteger values.
BigInteger positiveValue = BigInteger.Parse("4713143110832790377889");
BigInteger negativeValue = BigInteger.Add(-Int64.MaxValue, -60000); 
BigInteger positiveValue2, negativeValue2;

// Create two byte arrays.
byte[] positiveBytes = positiveValue.ToByteArray();
byte[] negativeBytes = negativeValue.ToByteArray();

// Instantiate new BigInteger from negativeBytes array.
Console.Write("Converted {0:N0} to the byte array ", negativeValue);
foreach (byte byteValue in negativeBytes)
   Console.Write("{0:X2} ", byteValue);
Console.WriteLine();
negativeValue2 = new BigInteger(negativeBytes);
Console.WriteLine("Converted the byte array to {0:N0}", negativeValue2);
Console.WriteLine();

// Instantiate new BigInteger from positiveBytes array.
Console.Write("Converted {0:N0} to the byte array ", positiveValue);
foreach (byte byteValue in positiveBytes)
   Console.Write("{0:X2} ", byteValue);
Console.WriteLine();
positiveValue2 = new BigInteger(positiveBytes);
Console.WriteLine("Converted the byte array to {0:N0}", positiveValue2);
Console.WriteLine();
// The example displays the following output:
//    Converted -9,223,372,036,854,835,807 to the byte array A1 15 FF FF FF FF FF 7F FF
//    Converted the byte array to -9,223,372,036,854,835,807
//    
//    Converted 4,713,143,110,832,790,377,889 to the byte array A1 15 FF FF FF FF FF 7F FF 00
//    Converted the byte array to 4,713,143,110,832,790,377,889
' Instantiate BigInteger values.
Dim positiveValue As BigInteger = BigInteger.Parse("4713143110832790377889")
Dim negativeValue As BigInteger = BigInteger.Add(-Int64.MaxValue, -60000) 
Dim positiveValue2, negativeValue2 As BigInteger

' Create two byte arrays.
Dim positiveBytes() As Byte = positiveValue.ToByteArray()
Dim negativeBytes() As Byte = negativeValue.ToByteArray()

' Instantiate new BigInteger from negativeBytes array.
Console.Write("Converted {0:N0} to the byte array ", negativeValue)
For Each byteValue As Byte In negativeBytes
   Console.Write("{0:X2} ", byteValue)
Next 
Console.WriteLine()
negativeValue2 = New BigInteger(negativeBytes)
Console.WriteLine("Converted the byte array to {0:N0}", negativeValue2)
Console.WriteLine()

' Instantiate new BigInteger from positiveBytes array.
Console.Write("Converted {0:N0} to the byte array ", positiveValue)
For Each byteValue As Byte In positiveBytes
   Console.Write("{0:X2} ", byteValue)
Next 
Console.WriteLine()
positiveValue2 = New BigInteger(positiveBytes)
Console.WriteLine("Converted the byte array to {0:N0}", positiveValue2)
Console.WriteLine()
' The example displays the following output:
'    Converted -9,223,372,036,854,835,807 to the byte array A1 15 FF FF FF FF FF 7F FF
'    Converted the byte array to -9,223,372,036,854,835,807
'    
'    Converted 4,713,143,110,832,790,377,889 to the byte array A1 15 FF FF FF FF FF 7F FF 00
'    Converted the byte array to 4,713,143,110,832,790,377,889

次の例は、値が0のバイトを配列の末尾に追加することによって、正の値が誤って負の値としてインスタンス化されないようにする方法を示しています。The following example illustrates how to make sure that a positive value is not incorrectly instantiated as a negative value by adding a byte whose value is zero to the end of the array.

ulong originalNumber = UInt64.MaxValue;
byte[] bytes = BitConverter.GetBytes(originalNumber);
if (originalNumber > 0 && (bytes[bytes.Length - 1] & 0x80) > 0) 
{
   byte[] temp = new byte[bytes.Length];
   Array.Copy(bytes, temp, bytes.Length);
   bytes = new byte[temp.Length + 1];
   Array.Copy(temp, bytes, temp.Length);
}

BigInteger newNumber = new BigInteger(bytes);
Console.WriteLine("Converted the UInt64 value {0:N0} to {1:N0}.", 
                  originalNumber, newNumber); 
// The example displays the following output:
//    Converted the UInt64 value 18,446,744,073,709,551,615 to 18,446,744,073,709,551,615.
Dim originalNumber As ULong = UInt64.MaxValue
' Convert an unsigned integer to a byte array.
Dim bytes() As Byte = BitConverter.GetBytes(originalNumber)
' Determine whether the MSB of the highest-order byte is set.
If originalNumber > 0 And (bytes(bytes.Length - 1) And &h80) > 0 Then
   ' If the MSB is set, add one zero-value byte to the end of the array.
   ReDim Preserve bytes(bytes.Length)
End If

Dim newNumber As New BigInteger(bytes)
Console.WriteLine("Converted the UInt64 value {0:N0} to {1:N0}.", 
                  originalNumber, newNumber) 
' The example displays the following output:
'    Converted the UInt64 value 18,446,744,073,709,551,615 to 18,446,744,073,709,551,615.

注釈

value 配列内の個々のバイトは、最下位バイトから上位バイトまでのリトルエンディアン順にする必要があります。The individual bytes in the value array should be in little-endian order, from lowest-order byte to highest-order byte. たとえば、数値1兆は、次の表に示すように表されます。For example, the numeric value 1,000,000,000,000 is represented as shown in the following table:

16 進数文字列Hexadecimal string E8D4A51000E8D4A51000
バイト配列 (最初に最も小さいインデックス)Byte array (lowest index first) 00 10 A5 D4 E8 0000 10 A5 D4 E8 00

数値を BigInteger.ToByteArrayBitConverter.GetBytesなどのバイト配列に変換するほとんどのメソッドでは、リトルエンディアン順にバイト配列が返されます。Most methods that convert numeric values to byte arrays, such as BigInteger.ToByteArray and BitConverter.GetBytes, return byte arrays in little-endian order.

コンストラクターは、符号と絶対値の表現を使用するためにバイト配列内の正の値を必要とし、負の値は2の補数表現を使用します。The constructor expects positive values in the byte array to use sign-and-magnitude representation, and negative values to use two's complement representation. つまり、value の最上位バイトの最上位ビットが設定されている場合、結果の BigInteger 値は負になります。In other words, if the highest-order bit of the highest-order byte in value is set, the resulting BigInteger value is negative. バイト配列のソースによっては、正の値が誤って負の値として解釈される可能性があります。Depending on the source of the byte array, this may cause a positive value to be misinterpreted as a negative value. 通常、バイト配列は次の方法で生成されます。Byte arrays are typically generated in the following ways:

  • BigInteger.ToByteArray メソッドを呼び出します。By calling the BigInteger.ToByteArray method. このメソッドは、正の値に対して配列の最上位バイトの最上位ビットを0に設定したバイト配列を返すため、正の値を負の値として解釈することはできません。Because this method returns a byte array with the highest-order bit of the highest-order byte in the array set to zero for positive values, there is no chance of misinterpreting a positive value as negative. ToByteArray メソッドによって作成された未変更のバイト配列は、BigInteger(Byte[]) コンストラクターに渡されたときに常にラウンドトリップします。Unmodified byte arrays created by the ToByteArray method always successfully round-trip when they are passed to the BigInteger(Byte[]) constructor.

  • BitConverter.GetBytes メソッドを呼び出し、パラメーターとして符号付き整数を渡す。By calling the BitConverter.GetBytes method and passing it a signed integer as a parameter. 符号付き整数は、符号と大きさの表現と2つの補数表現の両方を処理するため、正の値を負の値として解釈することはできません。Because signed integers handle both sign-and-magnitude representation and two's complement representation, there is no chance of misinterpreting a positive value as negative.

  • BitConverter.GetBytes メソッドを呼び出し、パラメーターとして符号なし整数を渡します。By calling the BitConverter.GetBytes method and passing it an unsigned integer as a parameter. 符号なし整数はその大きさだけで表されるため、正の値は誤って負の値として解釈される可能性があります。Because unsigned integers are represented by their magnitude only, positive values can be misinterpreted as negative values. このような解釈が行われないようにするには、配列の末尾にゼロバイト値を追加します。To prevent this misinterpretation, you can add a zero-byte value to the end of the array. 次のセクションの例では、図を示します。The example in the next section provides an illustration.

  • 前のいずれかのメソッドを呼び出すことなく、または既存のバイト配列を変更することによって、バイト配列を動的または静的に作成する。By creating a byte array either dynamically or statically without necessarily calling any of the previous methods, or by modifying an existing byte array. 正の値が誤って負の値として解釈されないようにするには、配列の末尾にゼロバイトの値を追加します。To prevent positive values from being misinterpreted as negative values, you can add a zero-byte value to the end of the array.

value が空の Byte 配列の場合、新しい BigInteger オブジェクトは BigInteger.Zeroの値に初期化されます。If value is an empty Byte array, the new BigInteger object is initialized to a value of BigInteger.Zero. valuenull場合、コンストラクターは ArgumentNullExceptionをスローします。If value is null, the constructor throws an ArgumentNullException.

こちらもご覧ください

BigInteger(Decimal)

BigInteger 値を使用して、Decimal 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a Decimal value.

public:
 BigInteger(System::Decimal value);
public BigInteger (decimal value);
new System.Numerics.BigInteger : decimal -> System.Numerics.BigInteger
Public Sub New (value As Decimal)

パラメーター

value
Decimal

10 進数。A decimal number.

次の例は、BigInteger(Decimal) コンストラクターを使用して BigInteger オブジェクトをインスタンス化する方法を示しています。The following example illustrates the use of the BigInteger(Decimal) constructor to instantiate a BigInteger object. Decimal 値の配列を定義し、各値を BigInteger(Decimal) コンストラクターに渡します。It defines an array of Decimal values, and then passes each value to the BigInteger(Decimal) constructor. BigInteger オブジェクトに割り当てられている場合、Decimal 値は丸められずに切り捨てられることに注意してください。Note that the Decimal value is truncated instead of rounded when it is assigned to the BigInteger object.

decimal[] decimalValues = { -1790.533m, -15.1514m, 18903.79m, 9180098.003m };
foreach (decimal decimalValue in decimalValues)
{
   BigInteger number = new BigInteger(decimalValue);
   Console.WriteLine("Instantiated BigInteger value {0} from the Decimal value {1}.",
                     number, decimalValue);
}                 
// The example displays the following output:
//    Instantiated BigInteger value -1790 from the Decimal value -1790.533.
//    Instantiated BigInteger value -15 from the Decimal value -15.1514.
//    Instantiated BigInteger value 18903 from the Decimal value 18903.79.
//    Instantiated BigInteger value 9180098 from the Decimal value 9180098.003.
Dim decimalValues() As Decimal = { -1790.533d, -15.1514d, 18903.79d, 9180098.003d }
For Each decimalValue As Decimal In decimalValues
   Dim number As New BigInteger(decimalValue)
   Console.WriteLine("Instantiated BigInteger value {0} from the Decimal value {1}.",
                     number, decimalValue)
Next                 
' The example displays the following output:
'    Instantiated BigInteger value -1790 from the Decimal value -1790.533.
'    Instantiated BigInteger value -15 from the Decimal value -15.1514.
'    Instantiated BigInteger value 18903 from the Decimal value 18903.79.
'    Instantiated BigInteger value 9180098 from the Decimal value 9180098.003.

注釈

このコンストラクターを呼び出した結果は、Decimal 値を BigInteger 変数に明示的に代入することと同じです。The result of calling this constructor is identical to explicitly assigning a Decimal value to a BigInteger variable.

このコンストラクターを呼び出すと、データが失われる可能性があります。value の小数部分は、BigInteger オブジェクトをインスタンス化するときに切り捨てられます。Calling this constructor can cause data loss; any fractional part of value is truncated when instantiating a BigInteger object.

BigInteger(Double)

倍精度浮動小数点値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a double-precision floating-point value.

public:
 BigInteger(double value);
public BigInteger (double value);
new System.Numerics.BigInteger : double -> System.Numerics.BigInteger
Public Sub New (value As Double)

パラメーター

value
Double

倍精度浮動小数点値です。A double-precision floating-point value.

例外

次の例は、BigInteger(Double) コンストラクターを使用して BigInteger オブジェクトをインスタンス化する方法を示しています。The following example illustrates the use of the BigInteger(Double) constructor to instantiate a BigInteger object. また、Double データ型を使用する場合に発生する可能性のある有効桁数の損失についても説明します。It also illustrates the loss of precision that may occur when you use the Double data type. Double に大きな値が割り当てられ、その値が BigInteger オブジェクトに割り当てられます。A Double is assigned a large value, which is then assigned to a BigInteger object. 出力に示されているように、この割り当てには精度の低下が伴います。As the output shows, this assignment involves a loss of precision. 両方の値が1ずつインクリメントされます。Both values are then incremented by one. 出力は、BigInteger オブジェクトに変更された値が反映されているのに対し、Double オブジェクトには反映されていないことを示しています。The output shows that the BigInteger object reflects the changed value, whereas the Double object does not.

// Create a BigInteger from a large double value.
double doubleValue = -6e20;
BigInteger bigIntValue = new BigInteger(doubleValue);
Console.WriteLine("Original Double value: {0:N0}", doubleValue);
Console.WriteLine("Original BigInteger value: {0:N0}", bigIntValue);
// Increment and then display both values.
doubleValue++;
bigIntValue += BigInteger.One;
Console.WriteLine("Incremented Double value: {0:N0}", doubleValue);
Console.WriteLine("Incremented BigInteger value: {0:N0}", bigIntValue);
// The example displays the following output:
//    Original Double value: -600,000,000,000,000,000,000
//    Original BigInteger value: -600,000,000,000,000,000,000
//    Incremented Double value: -600,000,000,000,000,000,000
//    Incremented BigInteger value: -599,999,999,999,999,999,999
' Create a BigInteger from a large double value.
Dim doubleValue As Double = -6e20
Dim bigIntValue As New BigInteger(doubleValue)
Console.WriteLine("Original Double value: {0:N0}", doubleValue)
Console.WriteLine("Original BigInteger value: {0:N0}", bigIntValue)
' Increment and then display both values.
doubleValue += 1
bigIntValue += BigInteger.One
Console.WriteLine("Incremented Double value: {0:N0}", doubleValue)
Console.WriteLine("Incremented BigInteger value: {0:N0}", bigIntValue)
' The example displays the following output:
'    Original Double value: -600,000,000,000,000,000,000
'    Original BigInteger value: -600,000,000,000,000,000,000
'    Incremented Double value: -600,000,000,000,000,000,000
'    Incremented BigInteger value: -599,999,999,999,999,999,999

注釈

value パラメーターの小数部分は、BigInteger オブジェクトをインスタンス化するときに切り捨てられます。Any fractional part of the value parameter is truncated when instantiating a BigInteger object.

Double データ型の有効桁数が不足しているため、このコンストラクターを呼び出すと、データが失われる可能性があります。Because of the lack of precision of the Double data type, calling this constructor can cause data loss.

このコンストラクターを呼び出した結果として得られる BigInteger 値は、Double の値を BigIntegerに明示的に代入した結果と同じ値になります。The BigInteger value that results from calling this constructor is identical to the value that results from explicitly assigning a Double value to a BigInteger.

BigInteger(Int32)

32 ビット符号付き整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a 32-bit signed integer value.

public:
 BigInteger(int value);
public BigInteger (int value);
new System.Numerics.BigInteger : int -> System.Numerics.BigInteger
Public Sub New (value As Integer)

パラメーター

value
Int32

32 ビットの符号付き整数です。A 32-bit signed integer.

次の例では、BigInteger(Int32) コンストラクターを呼び出して、32ビット整数の配列から BigInteger 値をインスタンス化します。The following example calls the BigInteger(Int32) constructor to instantiate BigInteger values from an array of 32-bit integers. また、暗黙的な変換を使用して、32ビット整数値を BigInteger 変数に代入します。It also uses implicit conversion to assign each 32-bit integer value to a BigInteger variable. 次に、2つの値を比較して、結果として得られる BigInteger 値が同じであることを確立します。It then compares the two values to establish that the resulting BigInteger values are the same.

int[] integers = { Int32.MinValue, -10534, -189, 0, 17, 113439,
                   Int32.MaxValue };
BigInteger constructed, assigned;

foreach (int number in integers)
{
   constructed = new BigInteger(number);
   assigned = number;
   Console.WriteLine("{0} = {1}: {2}", constructed, assigned, 
                     constructed.Equals(assigned)); 
}                                                  
// The example displays the following output:
//       -2147483648 = -2147483648: True
//       -10534 = -10534: True
//       -189 = -189: True
//       0 = 0: True
//       17 = 17: True
//       113439 = 113439: True
//       2147483647 = 2147483647: True      
Dim integers() As Integer = { Int32.MinValue, -10534, -189, 0, 17, 113439,
                              Int32.MaxValue }
Dim constructed, assigned As BigInteger

For Each number As Integer In integers
   constructed = New BigInteger(number)
   assigned = number
   Console.WriteLine("{0} = {1}: {2}", constructed, assigned, 
                     constructed.Equals(assigned)) 
Next
' The example displays the following output:
'       -2147483648 = -2147483648: True
'       -10534 = -10534: True
'       -189 = -189: True
'       0 = 0: True
'       17 = 17: True
'       113439 = 113439: True
'       2147483647 = 2147483647: True

注釈

このコンストラクターを使用して BigInteger オブジェクトをインスタンス化する場合、有効桁数は失われません。There is no loss of precision when instantiating a BigInteger object by using this constructor.

このコンストラクターを呼び出した結果として得られる BigInteger 値は、Int32 の値を BigIntegerに割り当てることによって得られる値と同じです。The BigInteger value that results from calling this constructor is identical to the value that results from assigning an Int32 value to a BigInteger.

BigInteger 構造体には、ByteInt16SByte、または UInt16型のパラメーターを持つコンストラクターは含まれません。The BigInteger structure does not include constructors with a parameter of type Byte, Int16, SByte, or UInt16. ただし、Int32 型では、8ビットおよび16ビット符号付き整数と符号なし整数の符号付き32ビット整数への暗黙的な変換がサポートされています。However, the Int32 type supports the implicit conversion of 8-bit and 16-bit signed and unsigned integers to signed 32-bit integers. その結果、このコンストラクターは、value がこれら4つの整数型のいずれかである場合に呼び出されます。As a result, this constructor is called if value is any one of these four integral types.

BigInteger(Int64)

64 ビット符号付き整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a 64-bit signed integer value.

public:
 BigInteger(long value);
public BigInteger (long value);
new System.Numerics.BigInteger : int64 -> System.Numerics.BigInteger
Public Sub New (value As Long)

パラメーター

value
Int64

64 ビットの符号付き整数です。A 64-bit signed integer.

次の例では、BigInteger(Int64) コンストラクターを呼び出して、64ビット整数の配列から BigInteger 値をインスタンス化します。The following example calls the BigInteger(Int64) constructor to instantiate BigInteger values from an array of 64-bit integers. また、暗黙的な変換を使用して、64ビット整数値を BigInteger 変数に代入します。It also uses implicit conversion to assign each 64-bit integer value to a BigInteger variable. 次に、2つの値を比較して、結果として得られる BigInteger 値が同じであることを確立します。It then compares the two values to establish that the resulting BigInteger values are the same.

long[] longs = { Int64.MinValue, -10534, -189, 0, 17, 113439,
                 Int64.MaxValue };
BigInteger constructed, assigned;

foreach (long number in longs)
{
   constructed = new BigInteger(number);
   assigned = number;
   Console.WriteLine("{0} = {1}: {2}", constructed, assigned, 
                     constructed.Equals(assigned)); 
}                                                  
// The example displays the following output:
//       -2147483648 = -2147483648: True
//       -10534 = -10534: True
//       -189 = -189: True
//       0 = 0: True
//       17 = 17: True
//       113439 = 113439: True
//       2147483647 = 2147483647: True      
Dim longs() As Long = { Int64.MinValue, -10534, -189, 0, 17, 113439,
                              Int64.MaxValue }
Dim constructed, assigned As BigInteger

For Each number As Long In longs
   constructed = New BigInteger(number)
   assigned = number
   Console.WriteLine("{0} = {1}: {2}", constructed, assigned, 
                     constructed.Equals(assigned)) 
Next
' The example displays the following output:
'       -2147483648 = -2147483648: True
'       -10534 = -10534: True
'       -189 = -189: True
'       0 = 0: True
'       17 = 17: True
'       113439 = 113439: True
'       2147483647 = 2147483647: True

注釈

このコンストラクターを使用して BigInteger オブジェクトをインスタンス化する場合、有効桁数は失われません。There is no loss of precision when instantiating a BigInteger object by using this constructor.

このコンストラクターを呼び出した結果として得られる BigInteger 値は、Int64 の値を BigIntegerに割り当てることによって得られる値と同じです。The BigInteger value that results from calling this constructor is identical to the value that results from assigning an Int64 value to a BigInteger.

BigInteger(Single)

単精度浮動小数点値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using a single-precision floating-point value.

public:
 BigInteger(float value);
public BigInteger (float value);
new System.Numerics.BigInteger : single -> System.Numerics.BigInteger
Public Sub New (value As Single)

パラメーター

value
Single

単精度浮動小数点値です。A single-precision floating-point value.

例外

次の例は、BigInteger(Single) コンストラクターを使用して BigInteger オブジェクトをインスタンス化する方法を示しています。The following example illustrates the use of the BigInteger(Single) constructor to instantiate a BigInteger object. また、Single データ型を使用する場合に発生する可能性のある有効桁数の損失についても説明します。It also illustrates the loss of precision that may occur when you use the Single data type. Single には、大きな負の値が割り当てられます。この値は、BigInteger オブジェクトに割り当てられます。A Single is assigned a large negative value, which is then assigned to a BigInteger object. 出力に示されているように、この割り当てには精度の低下が伴います。As the output shows, this assignment involves a loss of precision. 両方の値が1ずつインクリメントされます。Both values are then incremented by one. 出力は、BigInteger オブジェクトに変更された値が反映されているのに対し、Single オブジェクトには反映されていないことを示しています。The output shows that the BigInteger object reflects the changed value, whereas the Single object does not.

// Create a BigInteger from a large negative Single value
float negativeSingle = Single.MinValue;
BigInteger negativeNumber = new BigInteger(negativeSingle);

Console.WriteLine(negativeSingle.ToString("N0"));
Console.WriteLine(negativeNumber.ToString("N0"));

negativeSingle++;
negativeNumber++;

Console.WriteLine(negativeSingle.ToString("N0"));
Console.WriteLine(negativeNumber.ToString("N0"));
// The example displays the following output:
//       -340,282,300,000,000,000,000,000,000,000,000,000,000
//       -340,282,346,638,528,859,811,704,183,484,516,925,440
//       -340,282,300,000,000,000,000,000,000,000,000,000,000
//       -340,282,346,638,528,859,811,704,183,484,516,925,439
' Create a BigInteger from a large negative Single value
Dim negativeSingle As Single = Single.MinValue
Dim negativeNumber As New BigInteger(negativeSingle)

Console.WriteLine(negativeSingle.ToString("N0"))
Console.WriteLine(negativeNumber.ToString("N0"))

negativeSingle += 1
negativeNumber += 1
Console.WriteLine(negativeSingle.ToString("N0"))
Console.WriteLine(negativeNumber.ToString("N0"))
' The example displays the following output:
'       -340,282,300,000,000,000,000,000,000,000,000,000,000
'       -340,282,346,638,528,859,811,704,183,484,516,925,440
'       -340,282,300,000,000,000,000,000,000,000,000,000,000
'       -340,282,346,638,528,859,811,704,183,484,516,925,439

注釈

value パラメーターの小数部分は、BigInteger オブジェクトをインスタンス化するときに切り捨てられます。Any fractional part of the value parameter is truncated when instantiating a BigInteger object.

Single データ型の有効桁数がないため、このコンストラクターを呼び出すと、データが失われる可能性があります。Because of the lack of precision of the Single data type, calling this constructor can result in data loss.

このコンストラクターを呼び出した結果として得られる BigInteger 値は、Single の値を BigIntegerに明示的に代入した結果と同じ値になります。The BigInteger value that results from calling this constructor is identical to the value that results from explicitly assigning a Single value to a BigInteger.

BigInteger(UInt32)

重要

この API は CLS 準拠ではありません。

CLS 準拠の代替
System.Numerics.BigInteger.BigInteger(Int64)

32 ビット符号なし整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure using an unsigned 32-bit integer value.

public:
 BigInteger(System::UInt32 value);
[System.CLSCompliant(false)]
public BigInteger (uint value);
public BigInteger (uint value);
new System.Numerics.BigInteger : uint32 -> System.Numerics.BigInteger
Public Sub New (value As UInteger)

パラメーター

value
UInt32

32 ビットの符号なし整数値。An unsigned 32-bit integer value.

属性

次の例では、BigInteger(UInt32) コンストラクターと代入ステートメントを使用して、符号なし32ビット整数の配列から BigInteger 値を初期化します。The following example uses the BigInteger(UInt32) constructor and an assignment statement to initialize BigInteger values from an array of unsigned 32-bit integers. 次に、2つの値を比較して、BigInteger 値を初期化する2つのメソッドが同じ結果を生成することを示します。It then compares the two values to demonstrate that the two methods of initializing a BigInteger value produce identical results.

uint[] unsignedValues = { 0, 16704, 199365, UInt32.MaxValue };
foreach (uint unsignedValue in unsignedValues)
{
   BigInteger constructedNumber = new BigInteger(unsignedValue);
   BigInteger assignedNumber = unsignedValue;
   if (constructedNumber.Equals(assignedNumber))
      Console.WriteLine("Both methods create a BigInteger whose value is {0:N0}.",
                        constructedNumber);
   else
      Console.WriteLine("{0:N0} ≠ {1:N0}", constructedNumber, assignedNumber);
}
// The example displays the following output:
//    Both methods create a BigInteger whose value is 0.
//    Both methods create a BigInteger whose value is 16,704.
//    Both methods create a BigInteger whose value is 199,365.
//    Both methods create a BigInteger whose value is 4,294,967,295.
Dim unsignedValues() As UInteger = { 0, 16704, 199365, UInt32.MaxValue }
For Each unsignedValue As UInteger In unsignedValues
   Dim constructedNumber As New BigInteger(unsignedValue)
   Dim assignedNumber As BigInteger = unsignedValue
   If constructedNumber.Equals(assignedNumber) Then
      Console.WriteLine("Both methods create a BigInteger whose value is {0:N0}.",
                        constructedNumber)
   Else
      Console.WriteLine("{0:N0} ≠ {1:N0}", constructedNumber, assignedNumber)
   End If                         
Next
' The example displays the following output:
'    Both methods create a BigInteger whose value is 0.
'    Both methods create a BigInteger whose value is 16,704.
'    Both methods create a BigInteger whose value is 199,365.
'    Both methods create a BigInteger whose value is 4,294,967,295.

注釈

このコンストラクターを使用して BigInteger をインスタンス化する場合、精度は失われません。There is no loss of precision when instantiating a BigInteger using this constructor.

このコンストラクターを呼び出した結果として得られる BigInteger 値は、UInt32 の値を BigIntegerに割り当てることによって得られる値と同じです。The BigInteger value that results from calling this constructor is identical to the value that results from assigning a UInt32 value to a BigInteger.

BigInteger(UInt64)

重要

この API は CLS 準拠ではありません。

CLS 準拠の代替
System.Numerics.BigInteger.BigInteger(Double)

64 ビット符号なし整数値を使用して、BigInteger 構造体の新しいインスタンスを初期化します。Initializes a new instance of the BigInteger structure with an unsigned 64-bit integer value.

public:
 BigInteger(System::UInt64 value);
[System.CLSCompliant(false)]
public BigInteger (ulong value);
public BigInteger (ulong value);
new System.Numerics.BigInteger : uint64 -> System.Numerics.BigInteger
Public Sub New (value As ULong)

パラメーター

value
UInt64

符号なし 64 ビット整数。An unsigned 64-bit integer.

属性

次の例では、BigInteger(UInt64) コンストラクターを使用して、値が MaxValueに等しい BigInteger オブジェクトをインスタンス化します。The following example uses the BigInteger(UInt64) constructor to instantiate a BigInteger object whose value is equal to MaxValue.

ulong unsignedValue = UInt64.MaxValue;
BigInteger number = new BigInteger(unsignedValue);
Console.WriteLine(number.ToString("N0"));       
// The example displays the following output:
//       18,446,744,073,709,551,615      
Dim unsignedValue As ULong = UInt64.MaxValue
Dim number As New BigInteger(unsignedValue)
Console.WriteLine(number.ToString("N0"))       
' The example displays the following output:
'       18,446,744,073,709,551,615      

注釈

このコンストラクターを使用して BigInteger をインスタンス化する場合、精度は失われません。There is no loss of precision when instantiating a BigInteger using this constructor.

このコンストラクターを呼び出した結果として得られる BigInteger 値は、UInt64 の値を BigIntegerに割り当てることによって得られる値と同じです。The BigInteger value that results from calling this constructor is identical to the value that results from assigning a UInt64 value to a BigInteger.

BigInteger(ReadOnlySpan<Byte>, Boolean, Boolean)

バイトの読み取り専用スパンを使用して、BigInteger 構造体の新しいインスタンスを初期化します。任意で、符号付きエンコードとエンディアンのバイト順を示します。Initializes a new instance of the BigInteger structure using the values in a read-only span of bytes, and optionally indicating the signing encoding and the endianness byte order.

public BigInteger (ReadOnlySpan<byte> value, bool isUnsigned = false, bool isBigEndian = false);
new System.Numerics.BigInteger : ReadOnlySpan<byte> * bool * bool -> System.Numerics.BigInteger
Public Sub New (value As ReadOnlySpan(Of Byte), Optional isUnsigned As Boolean = false, Optional isBigEndian As Boolean = false)

パラメーター

value
ReadOnlySpan<Byte>

多倍長整数を表すバイトの読み取り専用のスパン。A read-only span of bytes representing the big integer.

isUnsigned
Boolean

true で符号なしのエンコードを使用することを示す場合は value。それ以外の場合は false (既定値)。true to indicate value uses unsigned encoding; otherwise, false (the default value).

isBigEndian
Boolean

true がビッグ エンディアンのバイト順であることを示す場合は value。それ以外の場合は false (既定値)。true to indicate value is in big-endian byte order; otherwise, false (the default value).

適用対象