¿Qué significa M en la notación literal decimal de C#?
Para trabajar con tipos de datos decimales, tengo que hacer esto con la inicialización de variables:
decimal aValue = 50.0M;
¿Qué significa la parte M?
Significa que es un literal decimal, como han dicho otros. Sin embargo, los orígenes probablemente no sean los sugeridos en otras partes de esta respuesta. Del estándar anotado de 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 letra endecimal
.
Una anotación similar menciona que las primeras versiones de C# incluían "Y" y "S" para literales byte
y respectivamente. short
Fueron descartados por no ser útiles con mucha frecuencia.
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 utilizar una notación en mayúsculas o minúsculas.
M se refiere al primer carácter no ambiguo de "decimal". Si no lo suma, el número se tratará como doble.
D es doble.
Un literal real con el sufijo M o m es de tipo decimal (dinero) . Por ejemplo, los literales 1m, 1,5m, 1e10m y 123,456M son todos de tipo decimal. Este literal se convierte a un valor decimal tomando el valor exacto y, si es necesario, redondeando al valor representable más cercano mediante el redondeo bancario. Cualquier escala aparente en el literal se conserva a menos que el valor se redondee o el valor sea cero (en cuyo último caso el signo y la escala serán 0). Por lo tanto, el literal 2.900m se analizará para formar el decimal con signo 0, coeficiente 2900 y escala 3.
Leer más sobre literales reales