Decimal.ToUInt64(Decimal) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重要
此 API 不符合 CLS。
将指定的 Decimal 的值转换为等效的 64 位无符号整数。
public:
static System::UInt64 ToUInt64(System::Decimal d);
[System.CLSCompliant(false)]
public static ulong ToUInt64 (decimal d);
[<System.CLSCompliant(false)>]
static member ToUInt64 : decimal -> uint64
Public Shared Function ToUInt64 (d As Decimal) As ULong
参数
- d
- Decimal
要转换的十进制数。
返回
与 d
的值等效的 64 位无符号整数。
- 属性
例外
d
为负或大于 UInt64.MaxValue。
示例
以下示例使用 ToUInt64 方法将十进制数转换为 UInt64 值。
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 {
ulong number = Decimal.ToUInt64(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
// 18446744073709551615.999 --> 18446744073709551615
// OverflowException: 18446744073709551616
// 9223372036854775807.999 --> 9223372036854775807
// 9223372036854775808 --> 9223372036854775808
// -0.999 --> 0
// OverflowException: -1
// OverflowException: -9223372036854775808.999
// 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.ToUInt64 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
// 18446744073709551615.999 --> 18446744073709551615
// OverflowException: 18446744073709551616
// 9223372036854775807.999 --> 9223372036854775807
// 9223372036854775808 --> 9223372036854775808
// -0.999 --> 0
// OverflowException: -1
// OverflowException: -9223372036854775808.999
// 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 ULong = Decimal.ToUInt64(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
' 18446744073709551615.999 --> 18446744073709551615
' OverflowException: 18446744073709551616
' 9223372036854775807.999 --> 9223372036854775807
' 9223372036854775808 --> 9223372036854775808
' -0.999 --> 0
' OverflowException: -1
' OverflowException: -9223372036854775808.999
' OverflowException: -9223372036854775809
注解
返回值是十进制值的整型部分;小数位数将被截断。
还可以使用Explicit赋值运算符将值转换为 Decimal 64 位无符号整数。 由于 运算符执行收缩转换,因此必须使用 C# 中的强制转换运算符或 Visual Basic 中的转换函数。