Esta documentación está archivada y no tiene mantenimiento.

Decimal (Estructura)

Representa un número decimal.

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public struct Decimal : IFormattable, IComparable, IConvertible, 
	IComparable<decimal>, IEquatable<decimal>
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class Decimal extends ValueType implements IFormattable, IComparable, 
	IConvertible, IComparable<Decimal>, IEquatable<Decimal>
JScript admite el uso de estructuras, pero no admite la declaración de estructuras nuevas.

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

Este tipo implementa interfaces IComparable, IComparable, IFormattable y IConvertible. Utilice la clase Convert para las conversiones en lugar de la implementación de miembro de interfaz explícita de IConvertible de este tipo.

En el ejemplo de código siguiente se muestra el uso de Decimal.

/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank {
    protected decimal MyFortune;

    public void AddPenny() {
        MyFortune = Decimal.Add(MyFortune, .01m);
    }

    public decimal Capacity {
        get {
            return Decimal.MaxValue;
        }
    }

    public decimal Dollars {
        get {
            return Decimal.Floor(MyFortune);
        }
    }

    public decimal Cents {
        get {
            return Decimal.Subtract(MyFortune, Decimal.Floor(MyFortune));
        }
    }

    public override string ToString() {
        return MyFortune.ToString("C")+" in piggy bank";
    }
}

/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank
{
    protected System.Decimal myFortune;

    public void AddPenny()
    {
        myFortune = Decimal.Add(myFortune, System.Convert.ToDecimal(0.01));
    } //AddPenny

    /** @property 
     */
    public System.Decimal get_Capacity()
    {
        return Decimal.MaxValue;
    } //get_Capacity

    /** @property 
     */
    public System.Decimal get_Dollars()
    {
        return Decimal.Floor(myFortune);
    } //get_Dollars

    /** @property 
     */
    public System.Decimal get_Cents()
    {
        return Decimal.Subtract(myFortune, Decimal.Floor(myFortune));
    } //get_Cents

    public String ToString()
    {
        return myFortune.ToString("C") + " in piggy bank";
    } //ToString
} //PiggyBank

/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank {
    protected var MyFortune : Decimal;

    public function AddPenny() {
        MyFortune = Decimal.Add(MyFortune, 0.01);
    }

    public function get Capacity() : Decimal {
            return Decimal.MaxValue;
    }

    public function get Dollars() : Decimal {
        return Decimal.Floor(MyFortune);
    }

    public function get Cents() : Decimal {
        return Decimal.Subtract(MyFortune, Decimal.Floor(MyFortune));
    }

    public function ToString() : String {
        return MyFortune.ToString("C")+" in piggy bank";
    }
}

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: