Відповіді:
Це означає, що це десяткова буква, як казали інші. Однак витоки, мабуть, не ті, що запропоновані в цій відповіді деінде. З анотаційного стандарту C # (версія ECMA, а не версія MS):
decimal
Суфікс М / м , так як D / D вже прийнятоdouble
. Хоча було висловлено припущення, що M - це гроші, гроші Пітер Голде нагадує, що M був обраний просто як наступний найкращий лист уdecimal
.
У подібній анотації згадується, що ранні версії C # включали "Y" і "S" для byte
та short
літерали відповідно. Їх відкидали, не дуже корисні.
З специфікацій 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
Зауважте, що ви можете використовувати великі або малі позначення.
М посилається на перший неоднозначний символ у "десятці". Якщо ви не додасте його, число вважатиметься подвійним.
D подвійний.
0.42
в десятковий може дати вам інше значення, ніж 0.42M
(і те ж саме для використання подвійного літералу замість поплавкового букваря - float val = 423.3
також не вдається). Таким чином, ви вибираєте між тонко неправильною поведінкою та помилкою компілятора, який потребує півсекунди для виправлення та відповідності стандартам CLR та C #.
Справжній буквальний суфікс M або m має десятковий тип. Наприклад, літерали 1м, 1,5м, 1е10м і 123,456М - всі десятичні типи. Цей буквальний перетворюється в десяткове значення шляхом взяття точного значення і, якщо необхідно, округлення до найближчого представного значення за допомогою округлення банкіра. Будь-яка шкала, видима в прямому значенні, зберігається, якщо значення не округлене або значення дорівнює нулю (в останньому випадку знак і шкала будуть дорівнює 0). Отже, буквальні 2 900 м будуть проаналізовані, щоб утворити десятковий знак зі знаком 0, коефіцієнтом 2900 та шкалою 3.
Ну, я здогадуюсь, M представляє мантію. Десяткові знаки можна використовувати для економії грошей, але це не означає, що десяткові використовуються лише для грошей.