Send feedback on this topic.
Teradata.Client.Provider
ToDecimal Method (TdDecimal)
Example 



Teradata.Client.Provider Namespace > TdDecimal Structure : ToDecimal Method
The TdDecimal that is to be converted to a System.Decimal value.
Converts the value of the specified TdDecimal to the equivalent Decimal.
Syntax
'Declaration
 
Public Shared Function ToDecimal( _
   ByVal input As TdDecimal _
) As Decimal
'Usage
 
Dim input As TdDecimal
Dim value As Decimal
 
value = TdDecimal.ToDecimal(input)
public static decimal ToDecimal( 
   TdDecimal input
)
public:
static decimal ToDecimal( 
   TdDecimal input
) 

Parameters

input
The TdDecimal that is to be converted to a System.Decimal value.

Return Value

A System.Decimal value that is equivalent to the TdDecimal is returned.
Exceptions
ExceptionDescription
The TdDecimal value is Null.
The TdDecimal could not be converted to a System.Decimal
Remarks
When a TdDecimal has a precision greater than the maximum precision (29) of a System.Decimal it will be converted into a System.Decimal if the TdDecimal can be adjusted so the following are true:

When TdDecimal is adjusted, the fractional part that will not fit into the System.Decimal will be truncated.

The actual precision refers to the precision of the number contained in the TdDecimal structure, not the precision that was specified when creating the TdDecimal. For example, the number 3.8432 has an actual precision of 5 and a scale of 4. A TdDecimal can be initialized with this number with a precision defined as 38 and a scale of 4 using the constructor:

new TdDecimal(38432, 0, 0, 0, 38, 4)

System.Decimal stores numbers as a scaled integer. It can support a number with a maximum precision of 29, maximum scale of 28, and number in the range of minus or plus 79,228,162,514,264,337,593,543,950,335. A scaled integer representation of a number is the number without any decimal separator. For example, the scale integer representation of 43567.90843 is 4356790843. The range of valid numbers also applies to the numbers' scaled integer representation.

Due to these characteristics of a System.Decimal, numbers that have valid precision/scale and are in the valid range may not fit into a System.Decimal. They will need to be truncated one decimal place. These numbers will have an actual precision of 29 and a scale greater than 0. These numbers will also have a scaled integer representation outside the valid range of a System.Decimal. The following are examples of some of these numbers:

Number Scaled Integer Representation
7.9228162514264337593543950336 79228162514264337593543950336
8922816251.4264337593543950335 89228162514264337593543950335

In order to perform a conversion to System.Decimal, these numbers will be truncated one decimal place.

Number To Be Converted Result of ToDecimal Conversion
7.9228162514264337593543950336 7.922816251426433759354395033
8922816251.4264337593543950335 8922816251.426433759354395033
7922816251426433759354959678.5 7922816251426433759354959678
9922816251426433759354395033.2 9922816251426433759354395033
Example
The following are examples of converting a TdDecimal to System.Decimal.
TdDecimal number;
System.Decimal decimalConversion;
            
// number = 98038.32    Precision = 7, Scale = 2
number = new TdDecimal(0x00959838, 0, 0, 0, 7, 2);
decimalConversion = TdDecimal.ToDecimal(number01);
Console.WriteLine("TdDecimal {0} converted to System.Decimal {1}", number, decimalConversion);
            
// number = 463748376236258608968456.45890325899806   Precision = 38, Scale = 14
//     The System.Decimal will contain the value 463748376236258608968456.4589
number01 = new TdDecimal(0x9B24EA1E, 0x9E6968B4, 0x322E08AD, 0x22E37806, 38, 14);
decimalConversion = TdDecimal.ToDecimal(number);
Console.WriteLine(TdDecimal {0} converted to System.Decimal {1}", number, decimalConversion);
            
// The following example will throw an overflow exception because the TdDecimal cannot be 
// adjusted to a Precision less than 29.
// number = 46374837623625860896845645890325899.806   Precision = 38, Scale = 3
number = new TdDecimal(0x9B24EA1E, 0x9E6968B4, 0x322E08AD, 0x22E37806, 38, 3);
decimalConversion = TdDecimal.ToDecimal(number);
Requirements

Target Platforms: Windows 8.1, Windows 10, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019

See Also

Reference

TdDecimal Structure
TdDecimal Members