# Decimal Narrowing Conversion (Double to Decimal)

Silverlight

Converts a double-precision floating-point number to a Decimal.

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

## Syntax

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

#### Parameters

value
Type: System.Double
A double-precision floating-point number.

#### Return Value

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

## Exceptions

ExceptionCondition
OverflowException

value is less than MinValue or greater than MaxValue.

-or-

## Examples

The following code example converts Double values to Decimal numbers 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.

Module Example

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

' Get the exception type name; remove the namespace prefix.
Function GetExceptionType(ByVal 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(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal 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.
outputBlock.Text &= String.Format(formatter, argument, decValue) & vbCrLf
End Sub

Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

outputBlock.Text &= _
"This example of the explicit conversion from Double " & _
"to Decimal " & vbCrLf & "generates the following " & _
"output." & vbCrLf & vbCrLf
outputBlock.Text &= String.Format(formatter, "Double argument", _
"Decimal value") & vbCrLf
outputBlock.Text &= String.Format(formatter, "---------------", _
"-------------") & vbCrLf

' Convert Double values and display the results.
DecimalFromDouble(outputBlock, 1.234567890123E-30)
DecimalFromDouble(outputBlock, 1.2345678901234E-25)
DecimalFromDouble(outputBlock, 1.23456789012345E-20)
DecimalFromDouble(outputBlock, 0.0000000001234567890123456)
DecimalFromDouble(outputBlock, 1.2345678901234567)
DecimalFromDouble(outputBlock, 1234567890123.4568)
DecimalFromDouble(outputBlock, 1.2345678901234568E+28)
DecimalFromDouble(outputBlock, 1.2345678901234568E+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

#### Silverlight

Supported in: 5, 4, 3

#### Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

#### XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

## Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.