Risposte:
Significa che è un valore decimale letterale, come altri hanno già detto. Tuttavia, le origini probabilmente non sono quelle suggerite altrove in questa risposta. Dallo standard annotato C # (la versione ECMA, non la versione MS):
Il
decimal
suffisso è M / m poiché D / d era già stato preso dadouble
. Sebbene sia stato suggerito che M sia sinonimo di denaro, Peter Golde ricorda che M è stata scelta semplicemente come la migliore lettera successivadecimal
.
Un'annotazione simile menziona che le prime versioni di C # includevano rispettivamente "Y" e "S" per byte
e short
letterali. Sono stati lasciati cadere per non essere utili molto spesso.
Dalle specifiche C #:
var f = 0f; // float
var d = 0d; // double
var m = 0m; // decimal (money)
var u = 0u; // unsigned int
var l = 0l; // long
var ul = 0ul; // unsigned long
Nota che puoi usare una notazione maiuscola o minuscola.
M si riferisce al primo carattere non ambiguo in "decimale". Se non lo aggiungi, il numero verrà trattato come un doppio.
D è doppia.
0.42
in decimale può darti un valore diverso da 0.42M
(e lo stesso per usare un doppio letterale al posto di un letterale float - float val = 423.3
fallisce). Quindi stai scegliendo tra un comportamento leggermente sbagliato e un errore del compilatore che richiede mezzo secondo per essere riparato e conforme agli standard CLR e C #.
Un vero letterale con il suffisso M o m è di tipo decimale. Ad esempio, i letterali 1m, 1.5m, 1e10m e 123.456M sono tutti di tipo decimale. Questo valore letterale viene convertito in un valore decimale prendendo il valore esatto e, se necessario, arrotondando al valore rappresentabile più vicino usando l'arrotondamento del banco. Qualsiasi scala apparente nel letterale viene conservata a meno che il valore non sia arrotondato o il valore sia zero (in questo caso il segno e la scala saranno 0). Quindi, i 2.900m letterali verranno analizzati per formare il decimale con segno 0, coefficiente 2900 e scala 3.
Beh, immagino che M rappresenti la mantissa. Il decimale può essere utilizzato per risparmiare denaro, ma non significa che il decimale viene utilizzato solo per denaro.