Jawaban:
Itu berarti desimal literal, seperti yang dikatakan orang lain. Namun, asal usulnya mungkin bukan yang disarankan di tempat lain dalam jawaban ini. Dari C # Beranotasi Standar (versi ECMA, bukan versi MS):
The
decimal
akhiran M / m sejak D / d sudah diambil olehdouble
. Walaupun dikatakan bahwa M berarti uang, Peter Golde ingat bahwa M dipilih hanya sebagai surat terbaik berikutnyadecimal
.
Anotasi serupa menyebutkan bahwa versi awal C # termasuk "Y" dan "S" untuk byte
dan short
literal masing-masing. Mereka dijatuhkan dengan alasan tidak terlalu berguna.
Dari spesifikasi 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
Perhatikan bahwa Anda dapat menggunakan notasi huruf besar atau kecil.
M mengacu pada karakter non-ambigu pertama dalam "desimal". Jika Anda tidak menambahkannya, nomor tersebut akan dianggap ganda.
D ganda.
0.42
ke desimal dapat memberi Anda nilai yang berbeda dari 0.42M
(dan sama untuk menggunakan literal ganda sebagai pengganti float literal - float val = 423.3
juga gagal). Jadi Anda memilih antara perilaku yang salah dan kesalahan kompiler yang membutuhkan waktu setengah detik untuk memperbaikinya dan sesuai dengan standar CLR dan C #.
Sebuah literal nyata yang di-sufiks oleh M atau m adalah tipe desimal. Sebagai contoh, literal 1m, 1.5m, 1e10m, dan 123.456M semuanya bertipe desimal. Literal ini dikonversi ke nilai desimal dengan mengambil nilai yang tepat, dan, jika perlu, pembulatan ke nilai representatif terdekat menggunakan pembulatan bankir. Skala apa pun yang tampak dalam literal dipertahankan kecuali nilainya dibulatkan atau nilainya nol (dalam hal ini tanda dan skala akan 0). Oleh karena itu, 2.900 m secara literal akan diuraikan untuk membentuk desimal dengan tanda 0, koefisien 2900, dan skala 3.
Yah, kurasa M mewakili mantissa. Desimal dapat digunakan untuk menghemat uang, tetapi bukan berarti desimal hanya digunakan untuk uang.