c# .net

c# - Sufijo de declaración para tipo decimal



.net (3)

Documentado en la especificación del lenguaje C # , capítulo 2.4.4:

float f = 1.2f; double d = 1.2d; uint u = 2u; long l = 2L; ulong ul = 2UL; decimal m = 2m;

Nada para int, byte, sbyte, short, ushort.

Si quiero usar un literal-decimal en el código, he visto que existe el m-sufijo (donde m significa dinero). ¿Es esto apropiado para cualquier decimales o existe una asignación más general (d significa doble, es decir, no es lo correcto aunque se admite una conversión directa)?

object decimalValue=2m;

Tenga en cuenta que tomé la asignación de objetos como ejemplo, porque en el caso de ...

decimal decimalValue=2;

... está implícito claro que 2 debe interpretarse como decimal a través del compilador.

EDITAR: m parece estar bien, msdn usa como ejemplo para el tipo decimal.


Respuesta corta a declarar decimal en C #

decimal firstMoney = 141.28m;

O / P: 141.28

decimal secondMoney = 100.00m;

O / P: 100

Para obtener más información, consulte MSDN .

Hope ayuda a alguien


Sin un sufijo, un literal real numérico será un doble. El sufijo m especifica que un literal real numérico debe ser un decimal.

Esto es realmente importante de saber, ya que la aritmética en los valores de coma flotante (como el Doble) es impreciso. Por ejemplo:

object decimalValue=(5.32 + 2.23);

Aquí, decimalValue en realidad contendrá un doble, con el valor inesperado de 7.5500000000000007. Si quiero 7.55, podría hacer esto:

object decimalValue=(5.32m + 2.23m);

Para responder a su pregunta sobre si hay un sufijo más general, m es el único sufijo para Decimal en C #. Puede representar dinero como usted mencionó, pero sí usar algo que no sea d, ¡ya que Double lo usa!

Lectura adicional: decimal (Referencia C #)