Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Decimal.ToUInt64(Decimal) Method

Definition

Namespace:
System
Assemblies:
mscorlib.dll, System.Runtime.dll
Assemblies:
netstandard.dll, System.Runtime.dll
Assembly:
System.Runtime.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs
Source:
Decimal.cs

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.

Important

This API is not CLS-compliant.

Converts the value of the specified Decimal to the equivalent 64-bit unsigned integer.

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

Parameters

d
Decimal

The decimal number to convert.

Returns

A 64-bit unsigned integer equivalent to the value of d.

Attributes

Exceptions

d is negative or greater than UInt64.MaxValue.

Examples

The following example uses the ToUInt64 method to convert decimal numbers to UInt64 values.

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

Remarks

The return value is the integral part of the decimal value; fractional digits are truncated.

You can also convert a Decimal value to an 64-bit unsigned 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.

Applies to

See also


Feedback

Was this page helpful?