Suffisso della dichiarazione per il tipo decimale


113

Se voglio usare un letterale decimale nel codice, ho visto che esiste il suffisso m (dove m sta per denaro). È appropriato per i decimali o esiste un'assegnazione più generale (d sta per double, che sicuramente non è la cosa giusta sebbene sia supportata una conversione diretta).

object decimalValue=2m;

Nota, ho preso come esempio l'assegnazione dell'oggetto, perché nel caso di ...

decimal decimalValue=2;

... è implicitamente chiaro che 2 dovrebbe essere interpretato come decimale tramite il compilatore.

m sembra essere ok, msdn lo usa come esempio per il tipo decimale.

Risposte:


234

Documentato nelle specifiche del linguaggio C # , capitolo 2.4.4:

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

Niente per int, byte, sbyte, short, ushort.


Sebbene non sia un suffisso, possiamo anche dichiarare un carattere con l' char c = 'a'utilizzo di apostrofi attorno al carattere.
Kevin Hogg

Puoi anche fare riferimento a questo documento, che è più intuitivo
Douglas Gaskell

22

Senza un suffisso, un letterale reale numerico sarà un Double. Il suffisso m specifica che un valore letterale reale numerico deve essere un decimale.

Questo è effettivamente importante da sapere, poiché l'aritmetica sui valori in virgola mobile (come Double) è imprecisa. Per esempio:

object decimalValue=(5.32 + 2.23);

Qui, decimalValue conterrà effettivamente un Double, con il valore imprevisto di 7.5500000000000007! Se voglio 7.55, potrei farlo:

object decimalValue=(5.32m + 2.23m);

Per rispondere alla tua domanda se esiste un suffisso più generale, m è l' unico suffisso per Decimal in C #. Potrebbe significare denaro come hai detto, ma hanno dovuto usare qualcosa di diverso da d, dato che è usato da Double!

Ulteriori letture: decimal (riferimenti per C #)


1
Grazie, ho visto e inserito il collegamento msdn nella mia domanda esattamente come hai inserito la tua risposta. Comunque ho accettato il post di Hans Passant perché c'è una bella lista che aiuterà molto le persone che verranno a questo post a causa dei suffissi. Ma grazie definitivamente.
HCL

0

Risposta breve a Declare Decimal in C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Per ulteriori informazioni, fare riferimento a MSDN .

La speranza aiuta qualcuno.


@Thomas, ho capito ma ho solo provato a dare una risposta breve per coloro che cercano la dichiarazione dei decimali, devo cancellare il post? , pensi che non sia utile?
shaijut

3
Lo vedo come non utile, ma sono tutt'altro che perfetto e potrebbe aiutare gli altri. Se in una seconda lettura lo trovi non utile, puoi cancellarlo. Se pensi che possa aiutare qualcuno, lascialo così com'è :)
Thomas Ayoub

2
@ThomasAyoub Personalmente, non vedo cosa aggiunge che la risposta di Hans non copre già.
Lankymart
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.