Decimal Explicit Conversion (Decimal to Double)
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Converts a Decimal to a double-precision floating-point number.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Narrowing Operator CType ( _
value As Decimal _
) As Double
public static explicit operator double (
decimal value
)
Parameters
- value
Type: System.Decimal
A Decimal to convert.
Return Value
Type: System.Double
A double-precision floating-point number that represents the converted Decimal.
Remarks
This operation can produce round-off errors 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# 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 code example converts Decimal numbers to Double values using the explicit Decimal to Double conversion.
' Example of the explicit conversions from decimal to float and
' decimal to double.
Module Example
Const formatter As String = "{0,30}{1,17}{2,23}"
' Convert the Decimal argument to a floating point value
' No exceptions are thrown.
Public Sub DecimalToSgl_Dbl(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal argument As Decimal)
Dim SingleValue As Single
Dim DoubleValue As Double
' Convert the argument to a Single value.
SingleValue = CSng(argument)
' Convert the argument to a Double value.
DoubleValue = CDbl(argument)
outputBlock.Text += String.Format(formatter, argument, _
SingleValue, DoubleValue) + vbCrLf
End Sub
Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
outputBlock.Text += String.Format(formatter, "Decimal argument", _
"Single", "Double") + vbCrLf
outputBlock.Text += String.Format(formatter, "----------------", _
"-----", "------") + vbCrLf
' Convert decimal values and display the results.
DecimalToSgl_Dbl(outputBlock, 0.0000000000000000000000000001D)
DecimalToSgl_Dbl(outputBlock, 0.0000000000123456789123456789D)
DecimalToSgl_Dbl(outputBlock, 123D)
DecimalToSgl_Dbl(outputBlock, New Decimal(123000000, 0, 0, False, 6))
DecimalToSgl_Dbl(outputBlock, 123456789.123456789D)
DecimalToSgl_Dbl(outputBlock, 123456789123456789123456789D)
DecimalToSgl_Dbl(outputBlock, Decimal.MinValue)
DecimalToSgl_Dbl(outputBlock, Decimal.MaxValue)
End Sub
End Module
' The example displays the following output:
' Decimal argument Single Double
' ---------------- ----- ------
' 0.0000000000000000000000000001 1E-28 1E-28
' 0.0000000000123456789123456789 1.234568E-11 1.23456789123457E-11
' 123 123 123
' 123.000000 123 123
' 123456789.123456789 1.234568E+08 123456789.123457
' 123456789123456789123456789 1.234568E+26 1.23456789123457E+26
' -79228162514264337593543950335 -7.922816E+28 -7.92281625142643E+28
' 79228162514264337593543950335 7.922816E+28 7.92281625142643E+28
// Example of the explicit conversions from decimal to float and
// decimal to double.
using System;
class Example
{
static string formatter = "{0,30}{1,17}{2,23}";
// Convert the decimal argument; no exceptions are thrown.
public static void DecimalToSgl_Dbl(System.Windows.Controls.TextBlock outputBlock, decimal argument)
{
object SingleValue;
object DoubleValue;
// Convert the argument to a single value.
SingleValue = (float)argument;
// Convert the argument to a double value.
DoubleValue = (double)argument;
outputBlock.Text += String.Format(formatter, argument,
SingleValue, DoubleValue) + "\n";
}
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
outputBlock.Text += String.Format(
"This example of the explicit conversions from decimal " +
"to float \nand decimal to double generates the " +
"following output. It displays \nseveral converted " +
"decimal values.\n") + "\n";
outputBlock.Text += String.Format(formatter, "decimal argument",
"float", "double") + "\n";
outputBlock.Text += String.Format(formatter, "----------------",
"-----", "------") + "\n";
// Convert decimal values and display the results.
DecimalToSgl_Dbl(outputBlock, 0.0000000000000000000000000001M);
DecimalToSgl_Dbl(outputBlock, 0.0000000000123456789123456789M);
DecimalToSgl_Dbl(outputBlock, 123M);
DecimalToSgl_Dbl(outputBlock, new decimal(123000000, 0, 0, false, 6));
DecimalToSgl_Dbl(outputBlock, 123456789.123456789M);
DecimalToSgl_Dbl(outputBlock, 123456789123456789123456789M);
DecimalToSgl_Dbl(outputBlock, decimal.MinValue);
DecimalToSgl_Dbl(outputBlock, decimal.MaxValue);
}
}
/*
This example of the explicit conversions from decimal to float
and decimal to double generates the following output. It displays
several converted decimal values.
decimal argument float double
---------------- ----- ------
0.0000000000000000000000000001 1E-28 1E-28
0.0000000000123456789123456789 1.234568E-11 1.23456789123457E-11
123 123 123
123.000000 123 123
123456789.123456789 1.234568E+08 123456789.123457
123456789123456789123456789 1.234568E+26 1.23456789123457E+26
-79228162514264337593543950335 -7.922816E+28 -7.92281625142643E+28
79228162514264337593543950335 7.922816E+28 7.92281625142643E+28
*/
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.