Respostas:
Isso significa que é um literal decimal, como outros já disseram. No entanto, as origens provavelmente não são as sugeridas em outras partes desta resposta. Do padrão anotado em C # (a versão do ECMA, não a versão do MS):
O
decimal
sufixo é M / m desde que D / d já foi usadodouble
. Embora tenha sido sugerido que M significa dinheiro, Peter Golde lembra que M foi escolhido simplesmente como a melhor melhor carta seguintedecimal
.
Uma anotação semelhante menciona que as versões anteriores do C # incluíam "Y" e "S" para byte
e short
literais, respectivamente. Eles foram descartados por não serem úteis com muita frequência.
Nas especificações do C #:
var f = 0f; // float
var d = 0d; // double
var m = 0m; // decimal (money)
var u = 0u; // unsigned int
var l = 0l; // long
var ul = 0ul; // unsigned long
Observe que você pode usar uma notação maiúscula ou minúscula.
M refere-se ao primeiro caractere não ambíguo em "decimal". Se você não o adicionar, o número será tratado como um dobro.
D é o dobro.
0.42
em decimal pode fornecer um valor diferente de 0.42M
(e o mesmo para o uso de um literal duplo no lugar de um literal flutuante - float val = 423.3
também falha). Portanto, você escolhe entre um comportamento sutilmente errado e um erro do compilador que leva meio segundo para corrigir e estar em conformidade com os padrões CLR e C #.
Um literal real com o sufixo M ou m é do tipo decimal. Por exemplo, os literais 1m, 1,5m, 1e10m e 123.456M são todos do tipo decimal. Esse literal é convertido em um valor decimal, obtendo o valor exato e, se necessário, arredondando para o valor representável mais próximo usando o arredondamento de banca. Qualquer escala aparente no literal é preservada, a menos que o valor seja arredondado ou o valor seja zero (nesse caso, o sinal e a escala serão 0). Portanto, o literal 2.900m será analisado para formar o decimal com o sinal 0, coeficiente 2900 e escala 3.
Bem, acho que M representa a mantissa. O decimal pode ser usado para economizar dinheiro, mas isso não significa que o decimal é usado apenas para o dinheiro.