Decimal.ToUInt16(Decimal) 方法

定义

重要

此 API 不符合 CLS。

符合 CLS 的替代方案
System.Decimal.ToInt32(Decimal)

将指定的 Decimal 的值转换为等效的 16 位无符号整数。Converts the value of the specified Decimal to the equivalent 16-bit unsigned integer.

public:
 static System::UInt16 ToUInt16(System::Decimal value);
[System.CLSCompliant(false)]
public static ushort ToUInt16 (decimal value);
static member ToUInt16 : decimal -> uint16
Public Shared Function ToUInt16 (value As Decimal) As UShort

参数

value
Decimal

要转换的十进制数。The decimal number to convert.

返回

value 的值等效的 16 位无符号整数。A 16-bit unsigned integer equivalent to the value of value.

属性

异常

value 大于 MaxValue 或小于 MinValuevalue is greater than MaxValue or less than MinValue.

示例

下面的示例使用 ToUInt16 方法将十进制数字转换为 UInt16 值。The following example uses the ToUInt16 method to convert decimal numbers to UInt16 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 {
            ushort number = Decimal.ToUInt16(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
//     65535.999 --> 65535
//     OverflowException: 65536
//     32767.999 --> 32767
//     32768 --> 32768
//     -0.999 --> 0
//     OverflowException: -1
//     OverflowException: -32768.999
//     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 UShort = Decimal.ToUInt16(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
'     65535.999 --> 65535
'     OverflowException: 65536
'     32767.999 --> 32767
'     32768 --> 32768
'     -0.999 --> 0
'     OverflowException: -1
'     OverflowException: -32768.999
'     OverflowException: -32769

注解

返回值为十进制值的整数部分;小数位被截断。The return value is the integral part of the decimal value; fractional digits are truncated.

还可以通过使用 Explicit 赋值运算符将 Decimal 值转换为16位无符号整数。You can also convert a Decimal value to a 16-bit unsigned integer by using the Explicit assignment operator. 由于运算符执行收缩转换,因此必须在 Visual Basic 中C#使用转换运算符或转换函数。Because the operator performs a narrowing conversion, you must use a casting operator in C# or a conversion function in Visual Basic.

适用于

另请参阅