Réponses:
Cela signifie que c'est un littéral décimal, comme d'autres l'ont dit. Cependant, les origines ne sont probablement pas celles suggérées ailleurs dans cette réponse. À partir de la norme annotée C # (la version ECMA, pas la version MS):
Le
decimal
suffixe est M / m car D / d a déjà été pris pardouble
. Bien qu'il ait été suggéré que M représente de l'argent, Peter Golde rappelle que M a été choisi simplement comme la meilleure lettre suivantedecimal
.
Une annotation similaire mentionne que les premières versions de C # incluaient respectivement "Y" et "S" pour byte
et short
littéraux. Ils ont été abandonnés au motif de ne pas être utiles très souvent.
D'après les spécifications 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
Notez que vous pouvez utiliser une notation majuscule ou minuscule.
M fait référence au premier caractère non ambigu en "décimal". Si vous ne l'ajoutez pas, le nombre sera traité comme un double.
D est double.
0.42
en décimale peut vous donner une valeur différente de 0.42M
(et la même chose pour l'utilisation d'un double littéral à la place d'un littéral flottant - float val = 423.3
échoue également). Vous choisissez donc entre un comportement subtilement erroné et une erreur de compilation qui prend une demi-seconde à corriger et est conforme aux normes CLR et C #.
Un vrai littéral suffixé par M ou m est de type décimal. Par exemple, les littéraux 1m, 1,5m, 1e10m et 123,456M sont tous de type décimal. Ce littéral est converti en valeur décimale en prenant la valeur exacte et, si nécessaire, en arrondissant à la valeur représentable la plus proche en utilisant l'arrondi bancaire. Toute échelle apparente dans le littéral est conservée sauf si la valeur est arrondie ou la valeur est zéro (dans ce dernier cas, le signe et l'échelle seront 0). Par conséquent, le littéral 2.900m sera analysé pour former la décimale avec le signe 0, le coefficient 2900 et l'échelle 3.
Eh bien, je suppose que M représente la mantisse. Décimal peut être utilisé pour économiser de l'argent, mais cela ne signifie pas, décimal uniquement utilisé pour de l'argent.