# Decimal Narrowing Conversion (Double to Decimal)

.NET Framework (current version)

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

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

## Syntax

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

#### Parameters

value
Type: System.Double

The double-precision floating-point number to convert.

#### Return Value

Type: System.Decimal

The converted double-precision floating point number.

## Exceptions

Exception Condition
OverflowException

value is less than Decimal.MinValue or greater than Decimal.MaxValue.

-or-

## Examples

The following example converts Double values to Decimal numbers by using the Double to Decimal conversion. This conversion requires the op_Explicit operator in Visual Basic.

```' Example of the explicit conversion from Double to Decimal.
Imports System
Imports Microsoft.VisualBasic

Module DecimalFromDoubleDemo

Const formatter As String = "{0,25:E16}{1,33}"

' Get the exception type name; remove the namespace prefix.
Function GetExceptionType( ex As Exception ) As String

Dim exceptionType   As String = ex.GetType( ).ToString( )
Return exceptionType.Substring( _
exceptionType.LastIndexOf( "."c ) + 1 )
End Function

' Convert the Double argument; catch exceptions that are thrown.
Sub DecimalFromDouble( argument As Double )

Dim decValue    As Object

' Convert the Double argument to a Decimal value.
Try
decValue = Decimal.op_Explicit( argument )
Catch ex As Exception
decValue = GetExceptionType( ex )
End Try

' Display the Decimal.
Console.WriteLine( formatter, argument, decValue )
End Sub

Sub Main( )

Console.WriteLine( _
"This example of the explicit conversion from Double " & _
"to Decimal " & vbCrLf & "generates the following " & _
"output." & vbCrLf )
Console.WriteLine( formatter, "Double argument", _
"Decimal value" )
Console.WriteLine( formatter, "---------------", _
"-------------" )

' Convert Double values and display the results.
DecimalFromDouble( 1.234567890123E-30 )
DecimalFromDouble( 1.2345678901234E-25 )
DecimalFromDouble( 1.23456789012345E-20 )
DecimalFromDouble( 1.234567890123456E-10 )
DecimalFromDouble( 1.2345678901234567 )
DecimalFromDouble( 1.23456789012345678E+12 )
DecimalFromDouble( 1.234567890123456789E+28 )
DecimalFromDouble( 1.234567890123456789E+30 )
End Sub
End Module

' This example of the explicit conversion from Double to Decimal
' generates the following output.
'
'           Double argument                    Decimal value
'           ---------------                    -------------
'   1.2345678901230000E-030                                0
'   1.2345678901233999E-025   0.0000000000000000000000001235
'   1.2345678901234499E-020   0.0000000000000000000123456789
'   1.2345678901234560E-010       0.000000000123456789012346
'   1.2345678901234567E+000                 1.23456789012346
'   1.2345678901234568E+012                 1234567890123.46
'   1.2345678901234568E+028    12345678901234600000000000000
'   1.2345678901234569E+030                OverflowException
```

## 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