Suffixe de déclaration pour le type décimal

113

Si je veux utiliser un littéral décimal dans le code, j'ai vu qu'il existe le suffixe m (où m représente l'argent). Est-ce approprié pour les décimales ou y a-t-il une affectation plus générale (d signifie double, ce n'est certainement pas la bonne chose bien qu'une conversion directe soit prise en charge).

object decimalValue=2m;

Veuillez noter que j'ai pris l'assignation d'objet comme exemple, car dans le cas de ...

decimal decimalValue=2;

... il est implicitement clair que 2 doit être interprété comme décimal via le compilateur.

m semble être correct, msdn l' utilise comme exemple pour le type décimal.

HCL
la source

Réponses:

234

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.

Hans Passant
la source
Bien qu'il ne s'agisse pas d'un suffixe, nous pouvons également déclarer un caractère en char c = 'a'utilisant des apostrophes autour du caractère.
Kevin Hogg
Vous pouvez également vous référer à ce document, qui est plus convivial: docs.microsoft.com/en-us/dotnet/csharp/language-reference
Douglas Gaskell
22

Sans suffixe, un réel numérique littéral sera un Double. Le suffixe m spécifie qu'un littéral réel numérique doit être un décimal.

Ceci est en fait important à savoir, car l'arithmétique sur les valeurs en virgule flottante (comme 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 de savoir s'il existe un suffixe plus général, m est le seul suffixe pour Decimal en C #. Cela pourrait représenter de l'argent comme vous l'avez mentionné, mais ils avaient utilisé autre chose que d, car il est utilisé par Double!

Lectures complémentaires: décimal (référence C #)

Brian MacKay
la source
1
Merci, j'ai vu et mis le lien msdn dans ma question exactement comme vous avez entré votre réponse. Cependant j'ai accepté le poste de Hans Passant car il y a une belle liste qui aidera beaucoup les personnes qui viendront à ce poste à cause des suffixes. Mais merci définitivement.
HCL
0

Réponse courte à Declare Decimal en C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Pour en savoir plus, consultez MSDN .

L'espoir aide quelqu'un.

shaijut
la source
@Thomas, je comprends mais j'ai juste essayé de donner une réponse courte pour ceux qui recherchent la déclaration décimale, dois-je supprimer le message? , vous pensez que ce n'est pas utile?
shaijut
3
Je le vois comme inutile mais je suis loin d'être parfait et cela peut aider les autres. Si, lors d'une seconde lecture, vous le trouvez inutile, vous pouvez le supprimer. Si vous pensez que cela aidera quelqu'un, laissez-le tel quel :)
Thomas Ayoub
2
@ThomasAyoub Personnellement, ne voyez pas ce que cela ajoute que la réponse de Hans ne couvre pas déjà.
Lankymart