Sdílet prostřednictvím


Decimal Explicit Conversion (Double to Decimal)

Microsoft Silverlight will reach end of support after October 2021. Learn more.

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
public static explicit operator decimal (
    double value
)

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

Exception Condition
OverflowException

value is less than MinValue or greater than MaxValue.

-or-

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

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
// Example of the explicit conversion from double to decimal.
using System;

class Example
{
   const string formatter = "{0,25:E16}{1,33}";

   // Get the exception type name; remove the namespace prefix.
   public static string GetExceptionType(Exception ex)
   {
      string exceptionType = ex.GetType().ToString();
      return exceptionType.Substring(
          exceptionType.LastIndexOf('.') + 1);
   }

   // Convert the double argument; catch exceptions that are thrown.
   public static void DecimalFromDouble(System.Windows.Controls.TextBlock outputBlock, double argument)
   {
      object decValue;

      // Convert the double argument to a decimal value.
      try
      {
         decValue = (decimal)argument;
      }
      catch (Exception ex)
      {
         decValue = GetExceptionType(ex);
      }

      outputBlock.Text += String.Format(formatter, argument, decValue) + "\n";
   }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      outputBlock.Text += 
          "This example of the explicit conversion from double " +
          "to decimal \ngenerates the following output.\n" + "\n";
      outputBlock.Text += String.Format(formatter, "double argument",
          "decimal value") + "\n";
      outputBlock.Text += String.Format(formatter, "---------------",
          "-------------") + "\n";

      // Convert double values and display the results.
      DecimalFromDouble(outputBlock, 1.234567890123E-30);
      DecimalFromDouble(outputBlock, 1.2345678901234E-25);
      DecimalFromDouble(outputBlock, 1.23456789012345E-20);
      DecimalFromDouble(outputBlock, 1.234567890123456E-10);
      DecimalFromDouble(outputBlock, 1.2345678901234567);
      DecimalFromDouble(outputBlock, 1.23456789012345678E+12);
      DecimalFromDouble(outputBlock, 1.234567890123456789E+28);
      DecimalFromDouble(outputBlock, 1.234567890123456789E+30);
   }
}

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