Respuestas:
Significa que es un literal decimal, como han dicho otros. Sin embargo, los orígenes probablemente no sean los sugeridos en otra parte de esta respuesta. Desde el estándar anotado C # (la versión ECMA, no la versión MS):
El
decimal
sufijo es M / m ya que D / d ya fue tomado pordouble
. Aunque se ha sugerido que M significa dinero, Peter Golde recuerda que M fue elegida simplemente como la siguiente mejor letradecimal
.
Una anotación similar menciona que las primeras versiones de C # incluían "Y" y "S" para byte
y short
literales respectivamente. Se dejaron caer por no ser útiles muy a menudo.
De las especificaciones de 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
Tenga en cuenta que puede usar una notación mayúscula o minúscula.
M se refiere al primer carácter no ambiguo en "decimal". Si no lo agrega, el número se tratará como un doble.
D es doble.
0.42
a decimal puede darle un valor diferente que 0.42M
(y lo mismo para usar un doble literal en lugar de un literal flotante, float val = 423.3
también falla). Entonces, está eligiendo entre un comportamiento sutilmente incorrecto y un error del compilador que tarda medio segundo en solucionarse y se ajusta a los estándares CLR y C #.
Un literal real con sufijo M o m es de tipo decimal. Por ejemplo, los literales 1m, 1.5m, 1e10m y 123.456M son todos de tipo decimal. Este literal se convierte en un valor decimal tomando el valor exacto y, si es necesario, redondeando al valor representable más cercano usando el redondeo bancario. Cualquier escala aparente en el literal se conserva a menos que el valor se redondee o el valor sea cero (en este último caso, el signo y la escala serán 0). Por lo tanto, el literal 2.900m se analizará para formar el decimal con el signo 0, el coeficiente 2900 y la escala 3.
Bueno, supongo que M representa la mantisa. El decimal se puede usar para ahorrar dinero, pero no significa que el decimal solo se use para el dinero.