Sufixo de declaração para tipo decimal


113

Se eu quiser usar um literal decimal no código, vi que existe o sufixo m (onde m significa dinheiro). Isso é apropriado para decimais ou há uma atribuição mais geral (d significa double, isso com certeza não é a coisa certa, embora uma conversão direta seja suportada).

object decimalValue=2m;

Observe, tomei a atribuição de objeto como exemplo, porque no caso de ...

decimal decimalValue=2;

... está implicitamente claro que 2 deve ser interpretado como decimal pelo compilador.

m parece estar bem, o msdn o usa como exemplo para o tipo decimal.

Respostas:


234

Documentado na especificação da linguagem C # , capítulo 2.4.4:

float f = 1.2f;
double d = 1.2d;
uint u = 2u;
long l = 2L;
ulong ul = 2UL;
decimal m = 2m;

Nada para int, byte, sbyte, short, ushort.


Embora não seja um sufixo, também podemos declarar um caractere char c = 'a'usando apóstrofos ao redor do caractere.
Kevin Hogg

Você também pode consultar este documento, que é mais amigável: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
Douglas Gaskell

22

Sem um sufixo, um literal real numérico será um Double. O sufixo m especifica que um literal real numérico deve ser um decimal.

Isso é realmente importante saber, uma vez que a aritmética em valores de ponto flutuante (como Double) é imprecisa. Por exemplo:

object decimalValue=(5.32 + 2.23);

Aqui, decimalValue conterá realmente um Double, com o valor inesperado de 7.5500000000000007! Se eu quiser 7,55, posso fazer o seguinte:

object decimalValue=(5.32m + 2.23m);

Para responder à sua pergunta sobre se existe um sufixo mais geral, m é o único sufixo para Decimal em C #. Pode significar dinheiro, como você mencionou, mas eles deveriam usar algo diferente de d, uma vez que é usado por Double!

Leitura adicional: decimal (referência C #)


1
Obrigado, eu vi e coloquei o link do msdn em minha pergunta exatamente como você digitou sua resposta. Porém aceitei o post de Hans Passant porque tem uma lista bacana que vai ajudar muito as pessoas que virão a este post por causa dos sufixos. Mas obrigado definitivamente.
HCL

0

Resposta curta para declarar decimal em C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Para mais informações, consulte MSDN .

A esperança ajuda alguém.


@Thomas, entendo, mas só tentei dar uma resposta curta para aqueles que procuram declaração de decimal, devo deletar a postagem? , você acha que não é útil?
shaijut

3
Não vejo como útil, mas estou longe de ser perfeito e pode ajudar outras pessoas. Se, em uma segunda leitura, você achar que não é útil, você pode excluí-lo. Se você acha que vai ajudar alguém, deixe como está :)
Thomas Ayoub

2
@ThomasAyoub Pessoalmente, não vejo o que isso acrescenta que a resposta de Hans ainda não cobre.
Lankymart de
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.