Deklarationssuffix für dezimalen Typ

Wenn ich einen Dezimal-Literal im Code verwenden möchte, habe ich gesehen, dass es das m-Suffix gibt (wobei m für Geld steht). Ist dies für irgendwelche Dezimalzahlen geeignet oder existiert eine allgemeinere Zuweisung (d steht für double, das ist für nicht das Richtige, obwohl eine direkte Konvertierung unterstützt wird).

object decimalValue=2m; 

Bitte beachten Sie, dass ich die Objektzuordnung als Beispiel genommen habe, da im Falle von …

 decimal decimalValue=2; 

… ist implizit klar, dass 2 durch den Compiler als dezimal interpretiert werden soll.

EDIT: m scheint in Ordnung zu sein, msdn verwendet es als Beispiel für den Dezimaltyp.

   

Dokumentiert in der C # -Sprachspezifikation, Kapitel 2.4.4:

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

Nichts für int, byte, sbyte, kurz, ushort.

Ohne ein Suffix ist ein numerisches reelles Literal ein Double. Das Suffix m gibt an, dass ein numerisches reelles Literal ein Dezimalzeichen sein sollte.

Dies ist eigentlich wichtig zu wissen, da Arithmetik auf Gleitkommawerten (wie Double) ungenau ist. Zum Beispiel:

 object decimalValue=(5.32 + 2.23); 

Hier wird decimalValue tatsächlich ein Double enthalten, mit dem unerwarteten Wert 7.5500000000000007! Wenn ich 7,55 möchte, könnte ich das tun:

 object decimalValue=(5.32m + 2.23m); 

Um Ihre Frage zu beantworten, ob es ein allgemeineres Suffix gibt, ist m das einzige Suffix für Dezimal in C #. Es könnte für Geld stehen, wie du erwähnt hast, aber sie hatten etwas anderes als d, da das von Double verwendet wird!

Weiterführende Literatur: dezimal (C # -Referenz)

Kurze Antwort zum Deklarieren von Dezimal in C #

 decimal firstMoney = 141.28m; 

O / P: 141.28

 decimal secondMoney = 100.00m; 

O / P: 100

Für mehr verweisen MSDN .

Hoffnung hilft jemandem.