Decimal.ToInt16(Decimal) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Converts the value of the specified Decimal to the equivalent 16-bit signed integer.
public:
static short ToInt16(System::Decimal value);
public static short ToInt16 (decimal value);
static member ToInt16 : decimal -> int16
Public Shared Function ToInt16 (value As Decimal) As Short
Parameters
- value
- Decimal
The decimal number to convert.
Returns
A 16-bit signed integer equivalent to value
.
Exceptions
value
is less than Int16.MinValue or greater than Int16.MaxValue.
Examples
The following example uses the ToInt16 method to convert decimal numbers to Int16 values.
using System;
class Example
{
public static void Main( )
{
decimal[] values = { 123m, new Decimal(123000, 0, 0, false, 3),
123.999m, 65535.999m, 65536m,
32767.999m, 32768m, -0.999m,
-1m, -32768.999m, -32769m };
foreach (var value in values) {
try {
short number = Decimal.ToInt16(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: 65535.999
// OverflowException: 65536
// 32767.999 --> 32767
// OverflowException: 32768
// -0.999 --> 0
// -1 --> -1
// -32768.999 --> -32768
// OverflowException: -32769
open System
let values =
[ 123m; Decimal(123000, 0, 0, false, 3uy)
123.999m; 65535.999m; 65536m
32767.999m; 32768m; -0.999m
-1m; -32768.999m; -32769m ]
for value in values do
try
let number = Decimal.ToInt16 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: 65535.999
// OverflowException: 65536
// 32767.999 --> 32767
// OverflowException: 32768
// -0.999 --> 0
// -1 --> -1
// -32768.999 --> -32768
// OverflowException: -32769
Module Example
Public Sub Main()
Dim values() As Decimal = { 123d, New Decimal(123000, 0, 0, false, 3),
123.999d, 65535.999d, 65536d,
32767.999d, 32768d, -0.999d,
-1d, -32768.999d, -32769d }
For Each value In values
Try
Dim number As Short = Decimal.ToInt16(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: 65535.999
' OverflowException: 65536
' 32767.999 --> 32767
' OverflowException: 32768
' -0.999 --> 0
' -1 --> -1
' -32768.999 --> -32768
' OverflowException: -32769
Remarks
You can also convert a Decimal value to a 16-bit integer by using the Explicit assignment operator. Because the operator performs a narrowing conversion, you must use a casting operator in C# or a conversion function in Visual Basic.