Exportar (0) Imprimir
Expandir todo

decimal (Referencia de C#)

La palabra clave decimal denota un tipo de datos de 128 bits. Comparado con los tipos de punto flotante, el tipo decimal tiene una mayor precisión y un intervalo más reducido, lo que lo hace adecuado para cálculos financieros y monetarios. El intervalo aproximado y la precisión para el tipo decimal aparecen en la siguiente tabla.

Tipo Intervalo aproximado Precisión Tipo de .NET Framework

decimal

±1,0 × 10−28 a ±7,9 × 1028

28-29 dígitos significativos

System.Decimal

Si desea tratar un literal numérico real como decimal, utilice el sufijo m o M; por ejemplo:


        decimal myMoney = 300.5m;

Sin el sufijo m, el número se trata como double, lo cual genera un error del compilador.

Los tipos integrales se convierten implícitamente a decimal y el resultado se evalúa como decimal. Por consiguiente, es posible inicializar una variable de tipo decimal mediante un literal entero sin el sufijo, de la manera siguiente:


        decimal myMoney = 300;

No existe conversión implícita entre tipos de punto flotante y el tipo decimal; por lo tanto, se debe utilizar una conversión de tipos para convertir estos dos tipos. Por ejemplo:


        decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;

Además, se pueden combinar tipos integrales numéricos y decimal en la misma expresión. No obstante, si se combinan tipos de punto flotante con el tipo decimal sin realizar una conversión de tipos, se producirá un error de compilación.

Para obtener más información sobre las conversiones numéricas implícitas, vea Tabla de conversiones numéricas implícitas (Referencia de C#).

Para obtener más información sobre las conversiones numéricas explícitas, vea Tabla de conversiones numéricas explícitas (Referencia de C#).

Se puede dar formato a los resultados mediante el método String.Format o a través del método System.Console.Write, el cual llama a String.Format(). El formato de moneda se especifica mediante la cadena del formato de moneda estándar "C" o "c", como se muestra en el ejemplo 2. Para obtener más información sobre el método String.Format, vea System.String.Format(System.String,System.Object).

En este ejemplo, se combina un tipo decimal y un tipo int en la misma expresión. El resultado se evalúa como tipo decimal.

Si intenta agregar las variables double y decimal mediante una instrucción como ésta:

double x = 9;
Console.WriteLine(d + x); // Error

obtendrá el siguiente mensaje de error:

Operator '+' cannot be applied to operands of type 'double' and 'decimal'

// keyword_decimal.cs
// decimal conversion
using System;
public class TestDecimal 
{
    static void Main () 
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
}

Resultados

12.1

En este ejemplo, se utiliza la cadena de formato de moneda para dar formato al resultado. Observe que x se redondea, ya que los dígitos decimales superan $0,99. La variable y, que representa el número máximo de dígitos exactos, se muestra exactamente en el formato adecuado.

// keyword_decimal2.cs
// Decimal type formatting
using System;
public class TestDecimalFormat 
{
    static void Main () 
    {
        decimal x = 0.999m;
        decimal y = 9999999999999999999999999999m;
        Console.WriteLine("My amount = {0:C}", x);
        Console.WriteLine("Your amount = {0:C}", y);
    }
}

Resultados

My amount = $1.00
Your amount = $9,999,999,999,999,999,999,999,999,999.00

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 1.3 Tipos y variables

  • 4.1.7 El tipo decimal

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft