# Decimal Narrowing Conversion (Decimal to Double)

.NET Framework (current version)

Note

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

equivalentCodeEntityM:System.Decimal.ToDouble(System.Decimal)

Defines an explicit conversion of a Decimal to a double-precision floating-point number.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

## Syntax

```Public Shared Narrowing Operator CType (
value As Decimal
) As Double
```

#### Parameters

value
Type: System.Decimal

The value to convert.

#### Return Value

Type: System.Double

A double-precision floating-point number that represents the converted Decimal.

## Remarks

This operation can result in a loss of precision, because a double-precision floating-point number has fewer significant digits than a Decimal.

This operator supports the explicit conversion of a Decimal to a Double. The syntax for such explicit conversions is language-dependent, and individual language compilers can provide different implementations and return different results. The example illustrates the different return values when you explicitly convert a Decimal value to a Double value by using C#, C++, and Visual Basic. To perform a conversion that is independent of language, you can call the ToDouble or the Convert.ToDouble(Decimal) method.

## Examples

The following example converts Decimal numbers to Double values by using the explicit Decimal to Double conversion.

```Module Example
Public Sub Main( )
' Define an array of Decimal values.
Dim values() As Decimal= { 0.0000000000000000000000000001d,
0.0000000000123456789123456789d,
123d,
New Decimal(123000000, 0, 0, False, 6),
123456789.123456789d,
123456789123456789123456789d,
Decimal.MinValue, Decimal.MaxValue }
For Each value In values
Dim dblValue As Double = CDbl(value)
Console.WriteLine("{0} ({1}) --> {2} ({3})", value,
value.GetType().Name, dblValue,
dblValue.GetType().Name)
Next
End Sub
End Module
' The example displays the following output:
'    0.0000000000000000000000000001 (Decimal) --> 1E-28 (Double)
'    0.0000000000123456789123456789 (Decimal) --> 1.23456789123457E-11 (Double)
'    123 (Decimal) --> 123 (Double)
'    123.000000 (Decimal) --> 123 (Double)
'    123456789.123456789 (Decimal) --> 123456789.123457 (Double)
'    123456789123456789123456789 (Decimal) --> 1.23456789123457E+26 (Double)
'    -79228162514264337593543950335 (Decimal) --> -7.92281625142643E+28 (Double)
'    79228162514264337593543950335 (Decimal) --> 7.92281625142643E+28 (Double)
```

## Version Information

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1