Decimal.ToInt32(Decimal) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將指定的 Decimal 值轉換為等效的 32 位元有符號整數。
public:
static int ToInt32(System::Decimal d);
public static int ToInt32(decimal d);
static member ToInt32 : decimal -> int
Public Shared Function ToInt32 (d As Decimal) As Integer
參數
- d
- Decimal
用小數轉換。
傳回
一個32位元有號整數,等價於 的 d值。
例外狀況
d 小於 Int32.MinValue 或大於 Int32.MaxValue。
範例
以下範例使用該 ToInt32 方法將十進位數 Int32 轉換為數值。
using System;
class Example
{
public static void Main( )
{
decimal[] values = { 123m, new decimal(123000, 0, 0, false, 3),
123.999m, 4294967295.999m, 4294967296m,
4294967296m, 2147483647.999m, 2147483648m,
-0.999m, -1m, -2147483648.999m, -2147483649m };
foreach (var value in values) {
try {
int number = Decimal.ToInt32(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: 4294967295.999
// OverflowException: 4294967296
// OverflowException: 4294967296
// 2147483647.999 --> 2147483647
// OverflowException: 2147483648
// -0.999 --> 0
// -1 --> -1
// -2147483648.999 --> -2147483648
// OverflowException: -2147483649
open System
let values =
[ 123m; Decimal(123000, 0, 0, false, 3uy)
123.999m; 4294967295.999m; 4294967296m
4294967296m; 2147483647.999m; 2147483648m
-0.999m; -1m; -2147483648.999m; -2147483649m ]
for value in values do
try
let number = Decimal.ToInt32 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: 4294967295.999
// OverflowException: 4294967296
// OverflowException: 4294967296
// 2147483647.999 --> 2147483647
// OverflowException: 2147483648
// -0.999 --> 0
// -1 --> -1
// -2147483648.999 --> -2147483648
// OverflowException: -2147483649
Module Example
Public Sub Main()
Dim values() As Decimal = { 123d, New Decimal(123000, 0, 0, false, 3),
123.999d, 4294967295.999d, 4294967296d,
4294967296d, 2147483647.999d, 2147483648d,
-0.999d, -1d, -2147483648.999d, -2147483649d }
For Each value In values
Try
Dim number As Integer = Decimal.ToInt32(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: 4294967295.999
' OverflowException: 4294967296
' OverflowException: 4294967296
' 2147483647.999 --> 2147483647
' OverflowException: 2147483648
' -0.999 --> 0
' -1 --> -1
' -2147483648.999 --> -2147483648
' OverflowException: -2147483649
'
備註
回傳值是小數值的整數部分;小數數字會被截斷。
你也可以用Decimal指派運算子把值轉換Explicit成 32 位元整數。 由於運算子執行狹窄轉換,你必須使用C#中的鑄造運算子,或Visual Basic中的轉換函數。