¿Qué significa la M en la notación literal decimal en C#?


Para trabajar con tipos de datos decimales, tengo que hacer esto con inicialización de variables:

decimal aValue = 50.0M;

¿Qué significa la parte M?

Author: Igby Largeman, 2009-06-10

4 answers

Significa que es un literal decimal, como otros han dicho. Sin embargo, los orígenes probablemente no son los sugeridos en otra parte de esta respuesta. Del Estándar anotado en C# (la versión ECMA, no la versión MS):

El sufijo decimal es M / m desde D / d ya fue tomada por double. Aunque se ha sugerido que M significa dinero, recuerda Peter Golde que M fue elegido simplemente como el siguiente mejor letra en decimal.

Una anotación similar menciona que las primeras versiones de C# incluían" Y "y" S " para byte y short literales respectivamente. Fueron dejados de lado por no ser útiles muy a menudo.

 288
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-06 13:00:55

M significa decimal. Si no lo agrega, el número se tratará como un doble. D es doble.

 7
Author: MDStephens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-10 18:54:51

Un literal real sufijo por M o m es de tipo decimal. Por ejemplo, los literales 1m, 1.5 m, 1e10m y 123.456 M 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 usando el redondeo de banker. Cualquier escala aparente en el literal se conserva a menos que el valor sea redondeado o el valor sea cero (en este último caso el signo y la escala serán 0). Por lo tanto, el literal 2.900 m se analizará a forme el decimal con el signo 0, el coeficiente 2900 y la escala 3.

Referencia: https://msdn.microsoft.com/en-us/library/aa691085.aspx

 1
Author: LuckyBrain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-28 00:52:31

Probablemente significa Dinero.

 -9
Author: mquander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-10 18:51:20