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 |
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
Referência
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