Decimal.ToInt64(Decimal) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將指定的 Decimal 值轉換為對等的 64 位元帶正負號整數。
public:
static long ToInt64(System::Decimal d);
public static long ToInt64 (decimal d);
static member ToInt64 : decimal -> int64
Public Shared Function ToInt64 (d As Decimal) As Long
參數
- d
- Decimal
要轉換的十進位數字。
傳回
64 位元帶正負號的整數,等於 d
的值。
例外狀況
d
小於 Int64.MinValue 或大於 Int64.MaxValue。
範例
下列範例會使用 方法, ToInt64 將十進位數轉換成 Int64 值。
using System;
class Example
{
public static void Main( )
{
decimal[] values = { 123m, new Decimal(123000, 0, 0, false, 3),
123.999m, 18446744073709551615.999m,
18446744073709551616m, 9223372036854775807.999m,
9223372036854775808m, -0.999m, -1m,
-9223372036854775808.999m,
-9223372036854775809m };
foreach (var value in values) {
try {
long number = Decimal.ToInt64(value);
Console.WriteLine("{0} --> {1}", value, number);
}
catch (OverflowException e)
{
Console.WriteLine("{0}: {1}", e.GetType().Name, value);
}
}
}
}
// The example displays the following output:
// 123 --> 123
// 123.000 --> 123
// 123.999 --> 123
// OverflowException: 18446744073709551615.999
// OverflowException: 18446744073709551616
// 9223372036854775807.999 --> 9223372036854775807
// OverflowException: 9223372036854775808
// -0.999 --> 0
// -1 --> -1
// -9223372036854775808.999 --> -9223372036854775808
// OverflowException: -9223372036854775809
open System
let values =
[ 123m; Decimal(123000, 0, 0, false, 3uy)
123.999m; 18446744073709551615.999m
18446744073709551616m; 9223372036854775807.999m
9223372036854775808m; -0.999m; -1m
-9223372036854775808.999m
-9223372036854775809m ]
for value in values do
try
let number = Decimal.ToInt64 value
printfn $"{value} --> {number}"
with :? OverflowException as e ->
printfn $"{e.GetType().Name}: {value}"
// The example displays the following output:
// 123 --> 123
// 123.000 --> 123
// 123.999 --> 123
// OverflowException: 18446744073709551615.999
// OverflowException: 18446744073709551616
// 9223372036854775807.999 --> 9223372036854775807
// OverflowException: 9223372036854775808
// -0.999 --> 0
// -1 --> -1
// -9223372036854775808.999 --> -9223372036854775808
// OverflowException: -9223372036854775809
Module Example
Public Sub Main()
Dim values() As Decimal = { 123d, New Decimal(123000, 0, 0, false, 3),
123.999d, 18446744073709551615.999d,
18446744073709551616d, 9223372036854775807.999d,
9223372036854775808d, -0.999d, -1d,
-9223372036854775808.999d,
-9223372036854775809d }
For Each value In values
Try
Dim number As Long = Decimal.ToInt64(value)
Console.WriteLine("{0} --> {1}", value, number)
Catch e As OverflowException
Console.WriteLine("{0}: {1}", e.GetType().Name, value)
End Try
Next
End Sub
End Module
' The example displays the following output:
' 123 --> 123
' 123.000 --> 123
' 123.999 --> 123
' OverflowException: 18446744073709551615.999
' OverflowException: 18446744073709551616
' 9223372036854775807.999 --> 9223372036854775807
' OverflowException: 9223372036854775808
' -0.999 --> 0
' -1 --> -1
' -9223372036854775808.999 --> -9223372036854775808
' OverflowException: -9223372036854775809
備註
傳回值是十進位值的整數部分;小數位數會截斷。
您也可以使用 Explicit 指派運算子,將值轉換成 Decimal 64 位整數。 因為運算子會執行縮小轉換,所以您必須在 C# 中使用轉換運算子,或在 Visual Basic 中使用轉換函式。