BigInteger.Explicit 運算子
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義 BigInteger 物件與另一個類型之間的明確轉換。
多載
Explicit(BigInteger to SByte)
定義從 BigInteger 物件到帶正負號 8 位元值的明確轉換。
此應用程式開發介面不符合 CLS 標準。 符合規範的替代項目為 Int16。
public:
static explicit operator System::SByte(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator sbyte (System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> sbyte
Public Shared Narrowing Operator CType (value As BigInteger) As SByte
參數
- value
- BigInteger
要轉換為帶正負號 8 位元值的值。
傳回
物件,包含 value
參數的值。
- 屬性
例外狀況
value
小於 SByte.MinValue 或大於 SByte.MaxValue。
範例
下列範例說明 如何將 BigInteger 轉換成 SByte 值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 SByte 。
// BigInteger to SByte conversion.
BigInteger goodSByte = BigInteger.MinusOne;
BigInteger badSByte = -130;
sbyte sByteFromBigInteger;
// Successful conversion using cast operator.
sByteFromBigInteger = (sbyte) goodSByte;
Console.WriteLine(sByteFromBigInteger);
// Handle conversion that should result in overflow.
try
{
sByteFromBigInteger = (sbyte) badSByte;
Console.WriteLine(sByteFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badSByte, e.Message);
}
Console.WriteLine();
// BigInteger to SByte conversion.
let goodSByte = BigInteger.MinusOne
let badSByte = bigint -130
// Successful conversion using cast operator.
let sByteFromBigInteger = sbyte goodSByte
printfn $"{sByteFromBigInteger}"
// Handle conversion that should result in overflow.
try
let sByteFromBigInteger = sbyte badSByte
printfn $"{sByteFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badSByte}:\n {e.Message}"
' BigInteger to SByte conversion.
Dim goodSByte As BigInteger = BigInteger.MinusOne
Dim badSByte As BigInteger = -130
Dim sByteFromBigInteger As SByte
' Convert using CType function.
sByteFromBigInteger = CType(goodSByte, SByte)
Console.WriteLine(sByteFromBigInteger)
' Convert using CSByte function.
sByteFromBigInteger = CSByte(goodSByte)
Console.WriteLine(sByteFromBigInteger)
' Handle conversion that should result in overflow.
Try
sByteFromBigInteger = CType(badSByte, SByte)
Console.WriteLine(sByteFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badSByte, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可從中轉換物件或從中 BigInteger 轉換的型別。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在 C#) 中的轉換運算子 (,或是使用 Visual Basic) 等 CType
或 CSByte
轉換函式 (時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 SByte ,則它可以在執行時間擲回 OverflowException 。 如果轉換成功,則結果 SByte 值不會遺失有效位數。
適用於
Explicit(Single to BigInteger)
定義從 Single 值到 BigInteger 值的明確轉換。
public:
static explicit operator System::Numerics::BigInteger(float value);
public static explicit operator System.Numerics.BigInteger (float value);
static member op_Explicit : single -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Single) As BigInteger
參數
- value
- Single
要轉換為 BigInteger 的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
為 NaN、PositiveInfinity 或 NegativeInfinity。
範例
下列範例會將值陣列 Single 中的個別專案轉換成 BigInteger 物件,然後顯示每個轉換的結果。 請注意,轉換期間會截斷值的任何小數部分 Single 。
float[] singles = { Single.MinValue, -1.430955172e03f, 2.410970032e05f,
Single.MaxValue, Single.PositiveInfinity,
Single.NegativeInfinity, Single.NaN };
BigInteger number;
Console.WriteLine("{0,37} {1,37}\n", "Single", "BigInteger");
foreach (float value in singles)
{
try {
number = (BigInteger) value;
Console.WriteLine("{0,37} {1,37}", value, number);
}
catch (OverflowException) {
Console.WriteLine("{0,37} {1,37}", value, "OverflowException");
}
}
// The example displays the following output:
// Single BigInteger
//
// -3.402823E+38 -3.4028234663852885981170418348E+38
// -1430.955 -1430
// 241097 241097
// 3.402823E+38 3.4028234663852885981170418348E+38
// Infinity OverflowException
// -Infinity OverflowException
// NaN OverflowException
let singles =
[| Single.MinValue
-1.430955172e03f
2.410970032e05f
Single.MaxValue
Single.PositiveInfinity
Single.NegativeInfinity
Single.NaN |]
printfn "%37s %37s\n" "Single" "BigInteger"
for value in singles do
try
let number = BigInteger(value)
printfn "%37O %37O" value number
with :? OverflowException ->
printfn "%37O %37s" value "OverflowException"
// The example displays the following output:
// Single BigInteger
//
// -3.402823E+38 -3.4028234663852885981170418348E+38
// -1430.955 -1430
// 241097 241097
// 3.402823E+38 3.4028234663852885981170418348E+38
// Infinity OverflowException
// -Infinity OverflowException
// NaN OverflowException
Dim singles() As Single = { Single.MinValue, -1.430955172e03, 2.410970032e05,
Single.MaxValue, Single.PositiveInfinity,
Single.NegativeInfinity, Single.NaN }
Dim number As BigInteger
Console.WriteLine("{0,37} {1,37}", "Single", "BigInteger")
Console.WriteLine()
For Each value As Single In singles
Try
number = CType(value, BigInteger)
Console.WriteLine("{0,37} {1,37}", value, number)
Catch e As OverflowException
Console.WriteLine("{0,37} {1,37}", value, "OverflowException")
End Try
Next
' The example displays the following output:
' Single BigInteger
'
' -3.402823E+38 -3.4028234663852885981170418348E+38
' -1430.955 -1430
' 241097 241097
' 3.402823E+38 3.4028234663852885981170418348E+38
' Infinity OverflowException
' -Infinity OverflowException
' NaN OverflowException
備註
在轉換之前,會截斷參數的任何小數部分 value
。
方法的多 Explicit(Decimal to BigInteger) 載會定義可從中轉換物件或從中 BigInteger 轉換的型別。 由於 從 Single 轉換成 BigInteger 的牽涉到截斷任何小數部分 value
,因此語言編譯器不會自動執行此轉換。 相反地,只有在 C#) 中的轉換運算子 (,或使用 Visual Basic) 之類的 CType
轉換函式 (時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
對於不支援自訂運算子的語言,替代方法是 BigInteger.BigInteger(Single) 。
適用於
Explicit(Complex to BigInteger)
明確地將值轉換成 Complex 大整數。
public:
static explicit operator System::Numerics::BigInteger(System::Numerics::Complex value);
public static explicit operator System.Numerics.BigInteger (System.Numerics.Complex value);
static member op_Explicit : System.Numerics.Complex -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Complex) As BigInteger
參數
- value
- Complex
要進行轉換的值。
傳回
value
轉換成大整數。
適用於
Explicit(BigInteger to UIntPtr)
重要
此 API 不符合 CLS 規範。
明確將大整數轉換成 UIntPtr 值。
public:
static explicit operator UIntPtr(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator UIntPtr (System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> unativeint
Public Shared Narrowing Operator CType (value As BigInteger) As UIntPtr
參數
- value
- BigInteger
要進行轉換的值。
傳回
unativeint
value
轉換成 UIntPtr 值。
- 屬性
適用於
Explicit(BigInteger to UInt64)
定義從 BigInteger 物件到不帶正負號 64 位元整數值的明確轉換。
此應用程式開發介面不符合 CLS 標準。 符合規範的替代項目為 Double。
public:
static explicit operator System::UInt64(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator ulong (System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> uint64
Public Shared Narrowing Operator CType (value As BigInteger) As ULong
參數
- value
- BigInteger
要轉換為不帶正負號 64 位元整數的值。
傳回
物件,包含 value
參數的值。
- 屬性
例外狀況
value
小於 UInt64.MinValue 或大於 UInt64.MaxValue。
範例
下列範例說明 如何將 BigIntegerUInt64 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 UInt64 。
// BigInteger to UInt64 conversion.
BigInteger goodULong = 2000000000;
BigInteger badULong = BigInteger.Pow(goodULong, 3);
ulong uLongFromBigInteger;
// Successful conversion using cast operator.
uLongFromBigInteger = (ulong) goodULong;
Console.WriteLine(uLongFromBigInteger);
// Handle conversion that should result in overflow.
try
{
uLongFromBigInteger = (ulong) badULong;
Console.WriteLine(uLongFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badULong, e.Message);
}
Console.WriteLine();
// BigInteger to UInt64 conversion.
let goodULong = bigint 2000000000
let badULong = BigInteger.Pow(goodULong, 3)
// Successful conversion using cast operator.
let uLongFromBigInteger = uint64 goodULong
printfn $"{uLongFromBigInteger}"
// Handle conversion that should result in overflow.
try
let uLongFromBigInteger = uint64 badULong
printfn $"{uLongFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badULong}:\n {e.Message}"
' BigInteger to UInt64 conversion.
Dim goodULong As BigInteger = 2000000000
Dim badULong As BigInteger = BigInteger.Pow(goodULong, 3)
Dim uLongFromBigInteger As ULong
' Convert using CType function.
uLongFromBigInteger = CType(goodULong, ULong)
Console.WriteLine(uLongFromBigInteger)
' Convert using CULng function.
uLongFromBigInteger = CULng(goodULong)
Console.WriteLine(uLongFromBigInteger)
' Handle conversion that should result in overflow.
Try
uLongFromBigInteger = CType(badULong, ULong)
Console.WriteLine(uLongFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badULong, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CULng
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 UInt64 ,它可以在執行時間擲 OverflowException 回 。 如果轉換成功,則結果 UInt64 值中不會遺失精確度。
適用於
Explicit(BigInteger to UInt32)
定義從 BigInteger 物件到不帶正負號 32 位元整數值的明確轉換。
此應用程式開發介面不符合 CLS 標準。 符合規範的替代項目為 Int64。
public:
static explicit operator System::UInt32(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator uint (System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> uint32
Public Shared Narrowing Operator CType (value As BigInteger) As UInteger
參數
- value
- BigInteger
要轉換為不帶正負號 32 位元整數的值。
傳回
物件,包含 value
參數的值。
- 屬性
例外狀況
value
小於 UInt32.MinValue 或大於 UInt32.MaxValue。
範例
下列範例說明 如何將 BigIntegerUInt32 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 UInt32 。
// BigInteger to UInt32 conversion.
BigInteger goodUInteger = 200000;
BigInteger badUInteger = 65000000000;
uint uIntegerFromBigInteger;
// Successful conversion using cast operator.
uIntegerFromBigInteger = (uint) goodInteger;
Console.WriteLine(uIntegerFromBigInteger);
// Handle conversion that should result in overflow.
try
{
uIntegerFromBigInteger = (uint) badUInteger;
Console.WriteLine(uIntegerFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badUInteger, e.Message);
}
Console.WriteLine();
// BigInteger to UInt32 conversion.
let goodUInteger = bigint 200000
let badUInteger = bigint 65000000000L
// Successful conversion using cast operator.
let uIntegerFromBigInteger = uint goodInteger
printfn $"{uIntegerFromBigInteger}"
// Handle conversion that should result in overflow.
try
let uIntegerFromBigInteger = uint badUInteger
printfn $"{uIntegerFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badUInteger}:\n {e.Message}"
' BigInteger to UInt32 conversion.
Dim goodUInteger As BigInteger = 200000
Dim badUInteger As BigInteger = 65000000000
Dim uIntegerFromBigInteger As UInteger
' Convert using CType function.
uIntegerFromBigInteger = CType(goodInteger, UInteger)
Console.WriteLine(uIntegerFromBigInteger)
' Convert using CUInt function.
uIntegerFromBigInteger = CUInt(goodInteger)
Console.WriteLine(uIntegerFromBigInteger)
' Handle conversion that should result in overflow.
Try
uIntegerFromBigInteger = CType(badUInteger, UInteger)
Console.WriteLine(uIntegerFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badUInteger, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CUInt
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 UInt32 ,它可以在執行時間擲 OverflowException 回 。 如果轉換成功,則結果 UInt32 值中不會遺失精確度。
適用於
Explicit(BigInteger to UInt16)
定義從 BigInteger 物件到不帶正負號 16 位元整數值的明確轉換。
此應用程式開發介面不符合 CLS 標準。 符合規範的替代項目為 Int32。
public:
static explicit operator System::UInt16(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator ushort (System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> uint16
Public Shared Narrowing Operator CType (value As BigInteger) As UShort
參數
- value
- BigInteger
要轉換為不帶正負號 16 位元整數的值。
傳回
物件,包含 value
參數的值。
- 屬性
例外狀況
value
小於 UInt16.MinValue 或大於 UInt16.MaxValue。
範例
下列範例說明 如何將 BigIntegerUInt16 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 UInt16 。
// BigInteger to UInt16 conversion.
BigInteger goodUShort = 20000;
BigInteger badUShort = 66000;
ushort uShortFromBigInteger;
// Successful conversion using cast operator.
uShortFromBigInteger = (ushort) goodUShort;
Console.WriteLine(uShortFromBigInteger);
// Handle conversion that should result in overflow.
try
{
uShortFromBigInteger = (ushort) badUShort;
Console.WriteLine(uShortFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badUShort, e.Message);
}
Console.WriteLine();
// BigInteger to UInt16 conversion.
let goodUShort = bigint 20000
let badUShort = bigint 66000
// Successful conversion using cast operator.
let uShortFromBigInteger = uint16 goodUShort
printfn $"{uShortFromBigInteger}"
// Handle conversion that should result in overflow.
try
let uShortFromBigInteger = uint16 badUShort
printfn $"{uShortFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badSByte}:\n {e.Message}"
' BigInteger to UInt16 conversion.
Dim goodUShort As BigInteger = 20000
Dim badUShort As BigInteger = 66000
Dim uShortFromBigInteger As UShort
' Convert using CType function.
uShortFromBigInteger = CType(goodUShort, UShort)
Console.WriteLine(uShortFromBigInteger)
' Convert using CUShort function.
uShortFromBigInteger = CUShort(goodUShort)
Console.WriteLine(uShortFromBigInteger)
' Handle conversion that should result in overflow.
Try
uShortFromBigInteger = CType(badUShort, UShort)
Console.WriteLine(uShortFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badUShort, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CUShort
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 UInt16 ,它可以在執行時間擲 OverflowException 回 。 如果轉換成功,則結果 UInt16 值中不會遺失精確度。
適用於
Explicit(BigInteger to UInt128)
重要
此 API 不符合 CLS 規範。
明確將大整數轉換成 UInt128 值。
public:
static explicit operator UInt128(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator UInt128 (System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> UInt128
Public Shared Narrowing Operator CType (value As BigInteger) As UInt128
參數
- value
- BigInteger
要進行轉換的值。
傳回
value
轉換為 UInt128 值。
- 屬性
適用於
Explicit(BigInteger to Single)
定義從 BigInteger 物件到單精確度浮點值的明確轉換。
public:
static explicit operator float(System::Numerics::BigInteger value);
public static explicit operator float (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> single
Public Shared Narrowing Operator CType (value As BigInteger) As Single
參數
- value
- BigInteger
要轉換為單精確度浮點值的值。
傳回
物件,包含 value
參數的最接近的可能表示。
範例
下列範例說明 如何將 BigIntegerSingle 轉換成值。
// BigInteger to Single conversion.
BigInteger goodSingle = (BigInteger) 102.43e22F;
BigInteger badSingle = (BigInteger) float.MaxValue;
badSingle = badSingle * 2;
float singleFromBigInteger;
// Successful conversion using cast operator.
singleFromBigInteger = (float) goodSingle;
Console.WriteLine(singleFromBigInteger);
// Convert an out-of-bounds BigInteger value to a Single.
singleFromBigInteger = (float) badSingle;
Console.WriteLine(singleFromBigInteger);
// BigInteger to Single conversion.
let goodSingle = bigint 102.43e22F
let badSingle = bigint Single.MaxValue * bigint 2
// Successful conversion using cast operator.
let singleFromBigInteger = float32 goodSingle
printfn $"{singleFromBigInteger}"
// Convert an out-of-bounds BigInteger value to a Single.
let singleFromBigInteger = float32 badSingle
printfn $"{singleFromBigInteger}"
' BigInteger to Single conversion.
Dim goodSingle As BigInteger = 102.43e22
Dim badSingle As BigInteger = CType(Single.MaxValue, BigInteger)
badSingle = badSingle * 2
Dim singleFromBigInteger As Single
' Convert using CType function.
singleFromBigInteger = CType(goodSingle, Single)
Console.WriteLine(singleFromBigInteger)
' Convert using CSng function.
singleFromBigInteger = CSng(goodSingle)
Console.WriteLine(singleFromBigInteger)
' Convert an out-of-bounds BigInteger value to a Single.
singleFromBigInteger = CType(badSingle, Single)
Console.WriteLine(singleFromBigInteger)
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失或精確度遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CSng
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
BigInteger因為值可以超出資料類型的範圍 Single ,所以此作業是縮小轉換。 如果轉換失敗,則不會擲回 OverflowException 。 相反地,如果 BigInteger 值小於 Single.MinValue ,則產生的 Single 值為 Single.NegativeInfinity 。 BigInteger如果值大於 Single.MaxValue ,則產生的 Single 值為 Single.PositiveInfinity 。
轉換成 BigIntegerSingle 的可能牽涉到精確度遺失。 在某些情況下,遺失精確度可能會導致轉換或轉換作業成功,即使 BigInteger 該值超出資料類型的範圍 Single 也一樣。 下列範例提供說明。 它會將 的 Single 最大值指派給兩 BigInteger 個變數、將一個變數遞增 9.999e291,並測試兩個 BigInteger 變數是否相等。 如預期般,對 方法的 BigInteger.Equals(BigInteger) 呼叫會顯示它們不相等。 不過,較大的值轉換 BigInteger 回 Single 成功,但 BigInteger 值現在超過 Single.MaxValue 。
// Increase a BigInteger so it exceeds Single.MaxValue.
BigInteger number1 = (BigInteger) Single.MaxValue;
BigInteger number2 = number1;
number2 = number2 + (BigInteger) 9.999e30;
// Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1));
// Convert the BigInteger to a Single.
float sng = (float) number2;
// Display the two values.
Console.WriteLine("BigInteger: {0}", number2);
Console.WriteLine("Single: {0}", sng);
// The example displays the following output:
// BigIntegers equal: False
// BigInteger: 3.4028235663752885981170396038E+38
// Single: 3.402823E+38
// Increase a BigInteger so it exceeds Single.MaxValue.
let number1 = bigint Single.MaxValue
let number2 = number1 + bigint 9.999e30
// Compare the BigInteger values for equality.
printfn $"BigIntegers equal: {number2.Equals number1}"
// Convert the BigInteger to a Single.
let sng = float32 number2
// Display the two values.
printfn $"BigInteger: {number2}"
printfn $"Single: {sng}"
// The example displays the following output:
// BigIntegers equal: False
// BigInteger: 3.4028235663752885981170396038E+38
// Single: 3.402823E+38
' Increase a BigInteger so it exceeds Single.MaxValue.
Dim number1 As BigInteger = CType(Single.MaxValue, BigInteger)
Dim number2 As BigInteger = number1
number2 = number2 + 9.999e30
' Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1))
' Convert the BigInteger to a Single.
Dim sng As Single = CType(number2, Single)
' Display the two values.
Console.WriteLine("BigInteger: {0}", number2)
Console.WriteLine("Single: {0}", sng)
' The example displays the following output:
' BigIntegers equal: False
' BigInteger: 3.4028235663752885981170396038E+38
' Single: 3.402823E+38
適用於
Explicit(BigInteger to IntPtr)
明確將大整數轉換成 IntPtr 值。
public:
static explicit operator IntPtr(System::Numerics::BigInteger value);
public static explicit operator IntPtr (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> nativeint
Public Shared Narrowing Operator CType (value As BigInteger) As IntPtr
參數
- value
- BigInteger
要進行轉換的值。
傳回
nativeint
value
轉換為 IntPtr 值。
適用於
Explicit(BigInteger to Int64)
定義從 BigInteger 物件到 64 位元帶正負號整數值的明確轉換。
public:
static explicit operator long(System::Numerics::BigInteger value);
public static explicit operator long (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> int64
Public Shared Narrowing Operator CType (value As BigInteger) As Long
參數
- value
- BigInteger
要轉換為 64 位元帶正負號整數的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
小於 Int64.MinValue 或大於 Int64.MaxValue。
範例
下列範例說明 如何將 BigIntegerInt64 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 Int64 。
// BigInteger to Int64 conversion.
BigInteger goodLong = 2000000000;
BigInteger badLong = BigInteger.Pow(goodLong, 3);
long longFromBigInteger;
// Successful conversion using cast operator.
longFromBigInteger = (long) goodLong;
Console.WriteLine(longFromBigInteger);
// Handle conversion that should result in overflow.
try
{
longFromBigInteger = (long) badLong;
Console.WriteLine(longFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badLong, e.Message);
}
Console.WriteLine();
// BigInteger to Int64 conversion.
let goodLong = 2000000000
let badLong = BigInteger.Pow(goodLong, 3)
// Successful conversion using cast operator.
let longFromBigInteger = int64 goodLong
printfn $"{longFromBigInteger}"
// Handle conversion that should result in overflow.
try
let longFromBigInteger = int64 badLong
printfn $"{longFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badLong}:\n {e.Message}"
' BigInteger to Int64 conversion.
Dim goodLong As BigInteger = 2000000000
Dim badLong As BigInteger = BigInteger.Pow(goodLong, 3)
Dim longFromBigInteger As Long
' Convert using CType function.
longFromBigInteger = CType(goodLong, Long)
Console.WriteLine(longFromBigInteger)
' Convert using CLng function.
longFromBigInteger = CLng(goodLong)
Console.WriteLine(longFromBigInteger)
' Handle conversion that should result in overflow.
Try
longFromBigInteger = CType(badLong, Long)
Console.WriteLine(longFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badLong, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CLng
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 Int64 ,它可以在執行時間擲 OverflowException 回 。
適用於
Explicit(BigInteger to Int16)
定義從 BigInteger 物件到 16 位元帶正負號整數值的明確轉換。
public:
static explicit operator short(System::Numerics::BigInteger value);
public static explicit operator short (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> int16
Public Shared Narrowing Operator CType (value As BigInteger) As Short
參數
- value
- BigInteger
要轉換為 16 位元帶正負號整數的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
小於 Int16.MinValue 或大於 Int16.MaxValue。
範例
下列範例說明 如何將 BigIntegerInt16 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 Int16 。
// BigInteger to Int16 conversion.
BigInteger goodShort = 20000;
BigInteger badShort = 33000;
short shortFromBigInteger;
// Successful conversion using cast operator.
shortFromBigInteger = (short) goodShort;
Console.WriteLine(shortFromBigInteger);
// Handle conversion that should result in overflow.
try
{
shortFromBigInteger = (short) badShort;
Console.WriteLine(shortFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badShort, e.Message);
}
Console.WriteLine();
// BigInteger to Int16 conversion.
let goodShort = bigint 20000
let badShort = bigint 33000
// Successful conversion using cast operator.
let shortFromBigInteger = int16 goodShort
printfn $"{shortFromBigInteger}"
// Handle conversion that should result in overflow.
try
let shortFromBigInteger = int16 badShort
printfn $"{shortFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badShort}:\n {e.Message}"
' BigInteger to Int16 conversion.
Dim goodShort As BigInteger = 20000
Dim badShort As BigInteger = 33000
Dim shortFromBigInteger As Short
' Convert using CType function.
shortFromBigInteger = CType(goodShort, Short)
Console.WriteLine(shortFromBigInteger)
' Convert using CShort function.
shortFromBigInteger = CShort(goodShort)
Console.WriteLine(shortFromBigInteger)
' Handle conversion that should result in overflow.
Try
shortFromBigInteger = CType(badShort, Short)
Console.WriteLine(shortFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badShort, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CShort
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 Int16 ,它可以在執行時間擲 OverflowException 回 。 如果轉換成功,則結果 Int16 值中不會遺失精確度。
適用於
Explicit(BigInteger to Int128)
明確將大整數轉換成 Int128 值。
public:
static explicit operator Int128(System::Numerics::BigInteger value);
public static explicit operator Int128 (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> Int128
Public Shared Narrowing Operator CType (value As BigInteger) As Int128
參數
- value
- BigInteger
要進行轉換的值。
傳回
value
轉換為 Int128 值。
適用於
Explicit(BigInteger to Half)
明確將大整數轉換成 Half 值。
public:
static explicit operator Half(System::Numerics::BigInteger value);
public static explicit operator Half (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> Half
Public Shared Narrowing Operator CType (value As BigInteger) As Half
參數
- value
- BigInteger
要進行轉換的值。
傳回
value
轉換為 Half 值。
適用於
Explicit(BigInteger to Double)
定義從 BigInteger 物件到 Double 值的明確轉換。
public:
static explicit operator double(System::Numerics::BigInteger value);
public static explicit operator double (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> double
Public Shared Narrowing Operator CType (value As BigInteger) As Double
參數
- value
- BigInteger
要轉換為 Double 的值。
傳回
物件,包含 value
參數的值。
範例
下列範例說明 如何將 BigIntegerDouble 轉換成值。
// BigInteger to Double conversion.
BigInteger goodDouble = (BigInteger) 102.43e22;
BigInteger badDouble = (BigInteger) Double.MaxValue;
badDouble = badDouble * 2;
double doubleFromBigInteger;
// successful conversion using cast operator.
doubleFromBigInteger = (double) goodDouble;
Console.WriteLine(doubleFromBigInteger);
// Convert an out-of-bounds BigInteger value to a Double.
doubleFromBigInteger = (double) badDouble;
Console.WriteLine(doubleFromBigInteger);
// BigInteger to Double conversion.
let goodDouble = bigint 102.43e22
let badDouble = bigint Double.MaxValue * bigint 2
// successful conversion using cast operator.
let doubleFromBigInteger = double goodDouble
printfn $"{doubleFromBigInteger}"
// Convert an out-of-bounds BigInteger value to a Double.
let doubleFromBigInteger = double badDouble
printfn $"{doubleFromBigInteger}"
' BigInteger to Double conversion.
Dim goodDouble As BigInteger = 102.43e22
Dim badDouble As BigInteger = CType(Double.MaxValue, BigInteger)
badDouble = badDouble * 2
Dim doubleFromBigInteger As Double
' Convert using CType function.
doubleFromBigInteger = CType(goodDouble, Double)
Console.WriteLine(doubleFromBigInteger)
' Convert using CDbl function.
doubleFromBigInteger = CDbl(goodDouble)
Console.WriteLine(doubleFromBigInteger)
' Convert an out-of-bounds BigInteger value to a Double.
doubleFromBigInteger = CType(badDouble, Double)
Console.WriteLine(doubleFromBigInteger)
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CDbl
或 Visual Basic) 時,才會執行轉換。
BigInteger因為值可以超出資料類型的範圍 Double ,所以此作業是縮小轉換。 如果轉換失敗,則不會擲回 OverflowException 。 相反地,如果 BigInteger 值小於 Double.MinValue ,則產生的 Double 值為 Double.NegativeInfinity 。 BigInteger如果值大於 Double.MaxValue ,則產生的 Double 值為 Double.PositiveInfinity 。
轉換成 BigIntegerDouble 的可能牽涉到精確度遺失。 在某些情況下,遺失精確度可能會導致轉換或轉換作業成功,即使 BigInteger 該值超出資料類型的範圍 Double 也一樣。 下列範例提供說明。 它會將 的 Double 最大值指派給兩 BigInteger 個變數、將一個變數遞增 9.999e291,並測試兩個 BigInteger 變數是否相等。 如預期般,對 方法的 BigInteger.Equals(BigInteger) 呼叫會顯示它們不相等。 不過,較大的值轉換 BigInteger 回 Double 成功,但 BigInteger 值現在超過 Double.MaxValue 。
// Increase a BigInteger so it exceeds Double.MaxValue.
BigInteger number1 = (BigInteger) Double.MaxValue;
BigInteger number2 = number1;
number2 = number2 + (BigInteger) 9.999e291;
// Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1));
// Convert the BigInteger to a Double.
double dbl = (double) number2;
// Display the two values.
Console.WriteLine("BigInteger: {0}", number2);
Console.WriteLine("Double: {0}", dbl);
// The example displays the following output:
// BigIntegers equal: False
// BigInteger: 1.7976931348623158081352742373E+308
// Double: 1.79769313486232E+308
// Increase a BigInteger so it exceeds Double.MaxValue.
let number1 = bigint Double.MaxValue
let number2 = number1 + bigint 9.999e291
// Compare the BigInteger values for equality.
printfn $"BigIntegers equal: {number2.Equals number1}"
// Convert the BigInteger to a Double.
let dbl = float number2
// Display the two values.
printfn $"BigInteger: {number2}"
printfn $"Double: {dbl}"
// The example displays the following output:
// BigIntegers equal: False
// BigInteger: 1.7976931348623158081352742373E+308
// Double: 1.79769313486232E+308
' Increase a BigInteger so it exceeds Double.MaxValue.
Dim number1 As BigInteger = CType(Double.MaxValue, BigInteger)
Dim number2 As BigInteger = number1
number2 = number2 + 9.999e291
' Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1))
' Convert the BigInteger to a Double.
Dim dbl As Double = CType(number2, Double)
' Display the two values.
Console.WriteLine("BigInteger: {0}", number2)
Console.WriteLine("Double: {0}", dbl)
' The example displays the following output:
' BigIntegers equal: False
' BigInteger: 1.7976931348623158081352742373E+308
' Double: 1.79769313486232E+308
適用於
Explicit(BigInteger to Decimal)
定義從 BigInteger 物件到 Decimal 值的明確轉換。
public:
static explicit operator System::Decimal(System::Numerics::BigInteger value);
public static explicit operator decimal (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> decimal
Public Shared Narrowing Operator CType (value As BigInteger) As Decimal
參數
- value
- BigInteger
要轉換為 Decimal 的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
小於 Decimal.MinValue 或大於 Decimal.MaxValue。
範例
下列範例說明 如何將 BigIntegerDecimal 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 Decimal 。
// BigInteger to Decimal conversion.
BigInteger goodDecimal = 761652543;
BigInteger badDecimal = (BigInteger) Decimal.MaxValue;
badDecimal += BigInteger.One;
Decimal decimalFromBigInteger;
// Successful conversion using cast operator.
decimalFromBigInteger = (decimal) goodDecimal;
Console.WriteLine(decimalFromBigInteger);
// Handle conversion that should result in overflow.
try
{
decimalFromBigInteger = (decimal) badDecimal;
Console.WriteLine(decimalFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badDecimal, e.Message);
}
Console.WriteLine();
// BigInteger to Decimal conversion.
let goodDecimal = 761652543
let badDecimal = bigint Decimal.MaxValue + BigInteger.One
// Successful conversion using cast operator.
let decimalFromBigInteger = decimal goodDecimal
printfn $"{decimalFromBigInteger}"
// Handle conversion that should result in overflow.
try
let decimalFromBigInteger = decimal badDecimal
printfn $"{decimalFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badDecimal}:\n {e.Message}"
' BigInteger to Decimal conversion.
Dim goodDecimal As BigInteger = 761652543
Dim badDecimal As BigInteger = CType(Decimal.MaxValue, BigInteger)
badDecimal += BigInteger.One
Dim decimalFromBigInteger As Decimal
' Convert using CType function.
decimalFromBigInteger = CType(goodDecimal, Decimal)
Console.WriteLine(decimalFromBigInteger)
' Convert using CDec function.
decimalFromBigInteger = CDec(goodDecimal)
Console.WriteLine(decimalFromBigInteger)
' Handle conversion that should result in overflow.
Try
decimalFromBigInteger = CType(badDecimal, Decimal)
Console.WriteLine(decimalFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badDecimal, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CDec
或 Visual Basic) 時,才會執行轉換。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 Decimal ,它可以在執行時間擲 OverflowException 回 。
適用於
Explicit(BigInteger to Char)
明確將大整數轉換成 Char 值。
public:
static explicit operator char(System::Numerics::BigInteger value);
public static explicit operator char (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> char
Public Shared Narrowing Operator CType (value As BigInteger) As Char
參數
- value
- BigInteger
要進行轉換的值。
傳回
value
轉換為 Char 值。
適用於
Explicit(BigInteger to Byte)
定義從 BigInteger 物件到不帶正負號位元組值的明確轉換。
public:
static explicit operator System::Byte(System::Numerics::BigInteger value);
public static explicit operator byte (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> byte
Public Shared Narrowing Operator CType (value As BigInteger) As Byte
參數
- value
- BigInteger
要轉換為 Byte 的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
小於 Byte.MinValue 或大於 Byte.MaxValue。
範例
下列範例說明 如何將 BigIntegerByte 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 Byte 。
// BigInteger to Byte conversion.
BigInteger goodByte = BigInteger.One;
BigInteger badByte = 256;
byte byteFromBigInteger;
// Successful conversion using cast operator.
byteFromBigInteger = (byte) goodByte;
Console.WriteLine(byteFromBigInteger);
// Handle conversion that should result in overflow.
try
{
byteFromBigInteger = (byte) badByte;
Console.WriteLine(byteFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badByte, e.Message);
}
Console.WriteLine();
// BigInteger to Byte conversion.
let goodByte = BigInteger.One
let badByte = bigint 256
// Successful conversion using cast operator.
let byteFromBigInteger = byte goodByte
printfn $"{byteFromBigInteger}"
// Handle conversion that should result in overflow.
try
let byteFromBigInteger = byte badByte
printfn $"{byteFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badByte}:\n {e.Message}"
' BigInteger to Byte conversion.
Dim goodByte As BigInteger = BigInteger.One
Dim badByte As BigInteger = 256
Dim byteFromBigInteger As Byte
' Convert using CType function.
byteFromBigInteger = CType(goodByte, Byte)
Console.WriteLine(byteFromBigInteger)
' Convert using CByte function.
byteFromBigInteger = CByte(goodByte)
Console.WriteLine(byteFromBigInteger)
' Handle conversion that should result in overflow.
Try
byteFromBigInteger = CType(badByte, Byte)
Console.WriteLine(byteFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badByte, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CByte
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 Byte ,它可以在執行時間擲 OverflowException 回 。 如果轉換成功,則結果 Byte 值中不會遺失精確度。
適用於
Explicit(Half to BigInteger)
明確將值轉換成 Half 大整數。
public:
static explicit operator System::Numerics::BigInteger(Half value);
public static explicit operator System.Numerics.BigInteger (Half value);
static member op_Explicit : Half -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Half) As BigInteger
參數
- value
- Half
要進行轉換的值。
傳回
value
轉換成大整數。
適用於
Explicit(Double to BigInteger)
定義從 Double 值到 BigInteger 值的明確轉換。
public:
static explicit operator System::Numerics::BigInteger(double value);
public static explicit operator System.Numerics.BigInteger (double value);
static member op_Explicit : double -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Double) As BigInteger
參數
- value
- Double
要轉換為 BigInteger 的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
為 NaN、PositiveInfinity 或 NegativeInfinity。
範例
下列範例會將值 BigInteger 陣列 Double 中的個別元素轉換成 物件,然後顯示每個轉換的結果。 請注意,在轉換期間,值的任何小數部分 Double 會截斷。
double[] doubles = { Double.MinValue, -1.430955172e03, 2.410970032e05,
Double.MaxValue, Double.PositiveInfinity,
Double.NegativeInfinity, Double.NaN };
BigInteger number;
Console.WriteLine("{0,37} {1,37}\n", "Double", "BigInteger");
foreach (double value in doubles)
{
try {
number = (BigInteger) value;
Console.WriteLine("{0,37} {1,37}", value, number);
}
catch (OverflowException) {
Console.WriteLine("{0,37} {1,37}", value, "OverflowException");
}
}
// The example displays the following output:
// Double BigInteger
//
// -1.79769313486232E+308 -1.7976931348623157081452742373E+308
// -1430.955172 -1430
// 241097.0032 241097
// 1.79769313486232E+308 1.7976931348623157081452742373E+308
// Infinity OverflowException
// -Infinity OverflowException
// NaN OverflowException
let doubles =
[| Double.MinValue
-1.430955172e03
2.410970032e05
Double.MaxValue
Double.PositiveInfinity
Double.NegativeInfinity
Double.NaN |]
printfn "%37s %37s\n" "Double" "BigInteger"
for value in doubles do
try
let number = BigInteger(value)
printfn "%37O %37O" value number
with :? OverflowException ->
printfn "%37O %37s" value "OverflowException"
// The example displays the following output:
// Double BigInteger
//
// -1.79769313486232E+308 -1.7976931348623157081452742373E+308
// -1430.955172 -1430
// 241097.0032 241097
// 1.79769313486232E+308 1.7976931348623157081452742373E+308
// Infinity OverflowException
// -Infinity OverflowException
// NaN OverflowException
Dim doubles() As Double = { Double.MinValue, -1.430955172e03, 2.410970032e05,
Double.MaxValue, Double.PositiveInfinity,
Double.NegativeInfinity, Double.NaN }
Dim number As BigInteger
Console.WriteLine("{0,37} {1,37}", "Double", "BigInteger")
Console.WriteLine()
For Each value As Double In doubles
Try
number = CType(value, BigInteger)
Console.WriteLine("{0,37} {1,37}", value, number)
Catch e As OverflowException
Console.WriteLine("{0,37} {1,37}", value, "OverflowException")
End Try
Next
' The example displays the following output:
' Double BigInteger
'
' -1.79769313486232E+308 -1.7976931348623157081452742373E+308
' -1430.955172 -1430
' 241097.0032 241097
' 1.79769313486232E+308 1.7976931348623157081452742373E+308
' Infinity OverflowException
' -Infinity OverflowException
' NaN OverflowException
備註
參數的任何小數部分 value
會在轉換之前被截斷。
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 由於從 Double 轉換為 BigInteger 的可能牽涉到截斷 的任何小數部分 value
,因此語言編譯器不會自動執行此轉換。 相反地,只有在 C#) 中的轉換運算子 (或使用 Visual Basic) 之類的 CType
轉換 (函式時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
對於不支援自訂運算子的語言,替代方法是 BigInteger.BigInteger(Double) 。
適用於
Explicit(Decimal to BigInteger)
定義從 Decimal 物件到 BigInteger 值的明確轉換。
public:
static explicit operator System::Numerics::BigInteger(System::Decimal value);
public static explicit operator System.Numerics.BigInteger (decimal value);
static member op_Explicit : decimal -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Decimal) As BigInteger
參數
- value
- Decimal
要轉換為 BigInteger 的值。
傳回
物件,包含 value
參數的值。
範例
下列範例會將值 BigInteger 陣列 Decimal 中的個別元素轉換成 物件,然後顯示每個轉換的結果。 請注意,在轉換期間,值的任何小數部分 Decimal 會截斷。
decimal[] decimals = { Decimal.MinValue, -15632.991m, 9029321.12m,
Decimal.MaxValue };
BigInteger number;
Console.WriteLine("{0,35} {1,35}\n", "Decimal", "BigInteger");
foreach (decimal value in decimals)
{
number = (BigInteger) value;
Console.WriteLine("{0,35} {1,35}", value, number);
}
// The example displays the following output:
//
// Decimal BigInteger
//
// -79228162514264337593543950335 -79228162514264337593543950335
// -15632.991 -15632
// 9029321.12 9029321
// 79228162514264337593543950335 79228162514264337593543950335
let decimals = [| Decimal.MinValue; -15632.991m; 9029321.12m; Decimal.MaxValue |]
printfn "%35s %35s\n" "Decimal" "BigInteger"
for value in decimals do
let number = BigInteger(value)
printfn "%35O %35O" value number
// The example displays the following output:
//
// Decimal BigInteger
//
// -79228162514264337593543950335 -79228162514264337593543950335
// -15632.991 -15632
// 9029321.12 9029321
// 79228162514264337593543950335 79228162514264337593543950335
' Explicit Decimal to BigInteger conversion
Dim decimals() As Decimal = { Decimal.MinValue, -15632.991d, 9029321.12d,
Decimal.MaxValue }
Dim number As BigInteger
Console.WriteLine("{0,35} {1,35}", "Decimal", "BigInteger")
Console.WriteLine()
For Each value As Decimal In decimals
number = CType(value, BigInteger)
Console.WriteLine("{0,35} {1,35}",
value, number)
Next
' The example displays the following output:
'
' Decimal BigInteger
'
' -79228162514264337593543950335 -79228162514264337593543950335
' -15632.991 -15632
' 9029321.12 9029321
' 79228162514264337593543950335 79228162514264337593543950335
備註
參數的任何小數部分 value
會在轉換之前被截斷。
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 由於從 Decimal 轉換為 BigInteger 的可能牽涉到截斷 的任何小數部分 value
,因此語言編譯器不會自動執行此轉換。 相反地,只有在 C#) 中的轉換運算子 (或使用 Visual Basic) 之類的 CType
轉換 (函式時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
對於不支援自訂運算子的語言,替代方法是 BigInteger.BigInteger(Decimal) 。
適用於
Explicit(BigInteger to Int32)
定義從 BigInteger 物件到 32 位元帶正負號整數值的明確轉換。
public:
static explicit operator int(System::Numerics::BigInteger value);
public static explicit operator int (System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> int
Public Shared Narrowing Operator CType (value As BigInteger) As Integer
參數
- value
- BigInteger
要轉換為 32 位元帶正負號整數的值。
傳回
物件,包含 value
參數的值。
例外狀況
value
小於 Int32.MinValue 或大於 Int32.MaxValue。
範例
下列範例說明 如何將 BigIntegerInt32 轉換成值。 它也會處理 OverflowException 擲回的 ,因為 BigInteger 值超出資料類型的範圍 Int32 。
// BigInteger to Int32 conversion.
BigInteger goodInteger = 200000;
BigInteger badInteger = 65000000000;
int integerFromBigInteger;
// Successful conversion using cast operator.
integerFromBigInteger = (int) goodInteger;
Console.WriteLine(integerFromBigInteger);
// Handle conversion that should result in overflow.
try
{
integerFromBigInteger = (int) badInteger;
Console.WriteLine(integerFromBigInteger);
}
catch (OverflowException e)
{
Console.WriteLine("Unable to convert {0}:\n {1}",
badInteger, e.Message);
}
Console.WriteLine();
// BigInteger to Int32 conversion.
let goodInteger = bigint 200000
let badInteger = bigint 65000000000L
// Successful conversion using cast operator.
let integerFromBigInteger = int goodInteger
printfn $"{integerFromBigInteger}"
// Handle conversion that should result in overflow.
try
let integerFromBigInteger = int badInteger
printfn $"{integerFromBigInteger}"
with :? OverflowException as e ->
printfn $"Unable to convert {badInteger}:\n {e.Message}"
' BigInteger to Int32 conversion.
Dim goodInteger As BigInteger = 200000
Dim badInteger As BigInteger = 65000000000
Dim integerFromBigInteger As Integer
' Convert using CType function.
integerFromBigInteger = CType(goodInteger, Integer)
Console.WriteLine(integerFromBigInteger)
' Convert using CInt function.
integerFromBigInteger = CInt(goodInteger)
Console.WriteLIne(integerFromBigInteger)
' Handle conversion that should result in overflow.
Try
integerFromBigInteger = CType(badInteger, Integer)
Console.WriteLine(integerFromBigInteger)
Catch e As OverflowException
Console.WriteLine("Unable to convert {0}:{1} {2}", _
badInteger, vbCrLf, e.Message)
End Try
Console.WriteLine()
備註
方法的多 Explicit(Decimal to BigInteger) 載會定義可以轉換物件之或來源 BigInteger 的類型。 語言編譯器不會自動執行此轉換,因為它可能會牽涉到資料遺失。 相反地,只有在使用 C# ) 中的轉換運算子 (或轉換函式 (,例如 CType
CInt
或 Visual Basic) 時,才會執行轉換。 否則,它們會顯示編譯器錯誤。
由於此作業會定義縮小轉換,因此如果 BigInteger 值超出資料類型的範圍 Int32 ,它可以在執行時間擲 OverflowException 回 。 如果轉換成功,則結果 Int32 值中不會遺失精確度。