Deklarationssuffix für Dezimaltyp

113

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

object decimalValue=2m;

Bitte beachten Sie, dass ich die Objektzuordnung als Beispiel genommen habe, weil im Fall von ...

decimal decimalValue=2;

... es ist implizit klar, dass 2 durch den Compiler als Dezimalzahl interpretiert werden sollte.

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

HCL
quelle

Antworten:

233

Dokumentiert in der C # -Sprachenspezifikation , 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, short, ushort.

Hans Passant
quelle
Obwohl dies kein Suffix ist, können wir ein Zeichen auch mit char c = 'a'Apostrophen um das Zeichen deklarieren .
Kevin Hogg
Sie können auch auf dieses Dokument
Douglas Gaskell
22

Ohne ein Suffix ist ein numerisches reelles Literal ein Double. Das Suffix m gibt an, dass ein numerisches reelles Literal eine Dezimalzahl sein soll.

Dies ist eigentlich wichtig zu wissen, da die Arithmetik für Gleitkommawerte (z. B. Double) ungenau ist. Zum Beispiel:

object decimalValue=(5.32 + 2.23);

Hier enthält decimalValue tatsächlich ein Double mit dem unerwarteten Wert 7.5500000000000007! Wenn ich 7.55 will, 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 Decimal in C #. Es könnte für Geld stehen, wie Sie erwähnt haben, aber sie hatten etwas anderes als d verwendet, da dies von Double verwendet wird!

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

Brian MacKay
quelle
1
Danke, ich habe den msdn-Link genau so gesehen und in meine Frage eingefügt, wie Sie Ihre Antwort eingegeben haben. Ich habe jedoch den Beitrag von Hans Passant angenommen, da es eine schöne Liste gibt, die den Leuten, die aufgrund der Suffixe zu diesem Beitrag kommen, sehr helfen wird. Aber auf jeden Fall danke.
HCL
0

Kurze Antwort auf Decimal deklarieren in C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Weitere Informationen finden Sie unter MSDN .

Hoffnung hilft jemandem.

Shaijut
quelle
@Thomas, ich verstehe, aber ich habe nur versucht, eine kurze Antwort für diejenigen zu geben, die nach einer dezimalen Angabe suchen. Soll ich den Beitrag löschen? , denkst du, es ist nicht nützlich?
Shaijut
3
Ich sehe es als nicht nützlich an, aber ich bin alles andere als perfekt und es kann anderen helfen. Wenn Sie es in einem zweiten Lesevorgang als nicht nützlich empfinden, können Sie es löschen. Wenn Sie denken, dass es jemandem helfen wird, lassen Sie es wie es ist :)
Thomas Ayoub
2
@ThomasAyoub Persönlich nicht sehen, was dies hinzufügt, dass Hans Antwort nicht bereits abdeckt.
Lankymart