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.