Decimal Narrowing Conversion (Double to Decimal)

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

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

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


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.


value is less than MinValue or greater than MaxValue.


value is Double.NaN, Double.PositiveInfinity, or Double.NegativeInfinity.

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


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

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

Community Additions