El tipo de valor Decimal representa números decimales comprendidos entre más 79,228,162,514,264,337,593,543,950,335 y menos 79,228,162,514,264,337,593,543,950,335. El tipo de valorDecimal es adecuado para realizar cálculos financieros que requieren un gran número de dígitos integrales y fraccionarios significativos sin errores de redondeo.
Un número decimal es un valor de punto flotante formado por un signo, un valor numérico cuyos dígitos están comprendidos entre 0 y 9, así como un factor de escala que indica la posición del punto decimal flotante que separa la parte entera y la parte fraccionaria del valor numérico.
La representación binaria de un valor Decimal está formado por un signo de 1 bit, un número entero de 96 bits y un factor de escala que se utiliza para dividir el entero de 96 bits y especificar la parte del mismo que es una fracción decimal. El factor de escala es implícitamente el número 10, elevado a un exponente que va de 0 a 28. Por consiguiente, la representación binaria de un valor Decimal tiene el formato, ((-296 a 296) / 10(0 a 28)), donde -296-1 es igual a MinValue y 296-1 es igual a MaxValue.
El factor de escala también mantiene los ceros finales en un número Decimal. Los ceros finales no afectan al valor de un número Decimal en operaciones de comparación o aritméticas. Sin embargo, los ceros finales pueden ser mostrados por el método ToString si se aplica una cadena de formato adecuada.
Consideraciones sobre conversiones
Este tipo proporciona métodos que convierten valores Decimal en valores de tipo Char, SByte, Int16, Int32, Int64, Byte, UInt16, UInt32 y UInt64, y a la inversa. Las conversiones de otros tipos de valor en valores de tipo Decimal son conversiones de ampliación en las que nunca se pierde información ni se producen excepciones.
Las conversiones de valores de tipo Decimal en otros tipos de valor son conversiones de restricción que redondean el valor Decimal al valor entero más próximo a cero. Si el resultado de la conversión no puede representarse en el tipo de destino, se produce OverflowException.
Este tipo proporciona métodos que convierten valores Decimal en Single y Double, y a la inversa. Las conversiones de valores Decimal en valores de tipo Single o Double son conversiones de restricción que pueden perder precisión, pero que no pierden información sobre la magnitud del valor convertido. Las conversiones de este tipo no producen excepciones.
Las conversiones de Single o Double en Decimal producen OverflowException si el resultado de la conversión no puede representarse en forma de Decimal.
Interfaces implementadas