140 votes

Suffixe de déclaration pour le type décimal

Si je veux utiliser une virgule littérale dans le code, j'ai vu qu'il existe le m-suffixe (où m représente de l'argent). Est-il approprié pour toutes les décimales ou n'existe plus général d'affectation (d représente le double, c'est pour shure pas la bonne chose même si une conversion directe est prise en charge).

object decimalValue=2m;

Veuillez noter, j'ai pris l'objet de cession à titre d'exemple, dans le cas de ...

decimal decimalValue=2;

... ses implicite clair que 2 doit être interprété comme une virgule par le compilateur.

EDIT: m semble être ok, msdn utilise comme exemple pour le type décimal.

301voto

Hans Passant Points 475940

Documenté dans la spécification du langage C # , chapitre 2.4.4:

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

Rien pour int, byte, sbyte, short, ushort.

25voto

Brian MacKay Points 10483

Sans un suffixe numérique réel littérale sera un Double. Le suffixe m indique qu'un numeric real littérale doit être un nombre Décimal.

C'est effectivement important de savoir, puisque l'arithmétique sur valeurs à virgule flottante (Double) est imprécise. Par exemple:

object decimalValue=(5.32 + 2.23);

Ici, decimalValue contiendra en fait un Double, avec la valeur inattendue de 7.5500000000000007! Si je veux 7.55, je pourrais faire ceci:

object decimalValue=(5.32m + 2.23m);

Pour répondre à votre question sur l'existence de plus de suffixe général, m est le seul suffixe Virgule en C#. Il peut être un obstacle pour de l'argent comme vous l'avez mentionné, mais ils ont dû faire usage de quelque chose d'autre que d, puisque c'est utilisé en Double!

Pour en savoir plus: décimal (Référence C#)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X