Decimal (referência C#) 

The decimal palavra-chave indica um tipo de dados de 128 bit. Em comparação aos tipos de ponto flutuante, o decimal tipo tem mais precisão e um intervalo menor, que faz com que seja apropriado para cálculos financeiros e monetários. O intervalo aproximado e a precisão para o decimal tipo são mostrados na tabela a seguir.

Type (Tipo)

Aproximar Range

Precisão

Tipo .NET Framework

decimal

±1.0 × 10-28 to ±7,9 × 1028

dígitos significativos 28-29

System.Decimal

Literais

Se você desejar um literal numérico de real a serem tratados sistema autônomo decimal, use o sufixo m ou M, por exemplo:

decimal myMoney = 300.5m;

Sem o sufixo m, o número é tratado sistema autônomo um duplo e gera um erro do compilador.

Conversões

Tipos integrais implicitamente são convertidos em decimal e o resultado é avaliada como decimal. Portanto, você pode inicializar uma variável decimal usando um literal Inteiro, sem o sufixo, da seguinte maneira:

decimal myMoney = 300;

Não há nenhuma conversão implícita entre tipos de ponto flutuante e o decimal Digite; portanto, uma conversão deverá ser usada para converter entre esses dois tipos. Por exemplo:

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

Você também pode misturar decimal e tipos numéricos integrais na mesma expressão. No entanto, a combinação decimal e tipos de ponto flutuante sem uma conversão causa um erro de compilação.

Para obter mais informações sobre conversões implícitas numéricas, consulte Numérico tabela Conversions (referência C#) implícita.

Para obter mais informações sobre conversões explícitas numéricas, consulte Numérico tabela Conversions (referência C#) explícita .

Formatação saída decimal

Você pode formatar os resultados usando o String.Format método, ou até o Console.Write método, que chama String.Format(). O formato de moeda é especificado pelo usando a seqüência de caracteres de formato de moeda padrão "C" ou "c", conforme mostrado no segundo exemplo neste artigo.Para mais informações sobre o método String.Format, consulte String.Format.

Exemplo

Neste exemplo, um decimal e um int são misturados na mesma expressão.O resultado é avaliada como a decimal Digite.

O exemplo a seguir usa uma demonstrativo tenta adicionar o duplo and decimal variáveis:

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

O resultado é o seguinte erro:

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

public class TestDecimal
{
    static void Main()
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
}
// Output: 12.1

Neste exemplo, a saída é formatada usando a seqüência de caracteres de formato de moeda.Observe que x é arredondado porque as casas decimais excedem $0.99.A variável y, que representa os dígitos exatos máximo, é exibida exatamente no formato correto.

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);
    }
}
/* Output:
    My amount = $1.00
    Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/

Especificação da linguagem C#

Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:

  • 1.3 Tipos e variáveis

  • O 4.1.7 tipo decimal

Consulte também

Conceitos

Guia de Programação C#

Referência

Palavras-chave C#

Integral tabela Tipos (referência C#)

Tabela tipos internas (referência C#)

Numérico tabela Conversions (referência C#) implícita

Numérico tabela Conversions (referência C#) explícita 

Decimal

Outros recursos

Referência C#