Суфікс декларації для десяткового типу


113

Якщо я хочу використовувати десятковий буквальний код у коді, я помітив, що існує m-суфікс (де m означає гроші). Чи підходить це для десяткових знаків або є більш загальне призначення (d означає подвійне, це точно не правильна річ, хоча підтримується пряме перетворення).

object decimalValue=2m;

Зауважте, я взяв за приклад призначення об'єкта, тому що у випадку ...

decimal decimalValue=2;

... неявно зрозуміло, що 2 слід інтерпретувати як десятковий через компілятор.

m, здається, нормально, msdn використовує його як приклад для десяткового типу.

Відповіді:


234

Документовано у специфікації мови C # , глава 2.4.4:

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

Нічого для int, byte, sbyte, short, ushort.


Хоча це не суфікс, ми також можемо оголосити персонажа, char c = 'a'використовуючи апострофи навколо символу.
Кевін Хогг

Ви також можете посилатися на цей документ, який є більш зручним для користувачів: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
Douglas Gaskell

22

Без суфікса числовим реальним літералом буде Double. Суфікс m вказує, що числовий реальний літерал повинен бути десятковою.

Це насправді важливо знати, оскільки арифметика на значеннях з плаваючою комою (наприклад, Double) є неточною. Наприклад:

object decimalValue=(5.32 + 2.23);

Тут decimalValue фактично буде містити Double, з несподіваним значенням 7,5500000000000007! Якщо я хочу 7,55, я можу це зробити:

object decimalValue=(5.32m + 2.23m);

Щоб відповісти на ваше запитання про те, чи є більш загальний суфікс, m - єдиний суфікс для десяткового числа в C #. Це може означати гроші, як ви згадали, але вони використовували щось інше, ніж d, оскільки це використовується Double!

Подальше читання: десятковий (C # Посилання)


1
Дякую, я побачив і вклав msdn-посилання в моє запитання саме так, як ви ввели свою відповідь. Однак я прийняв пост Ганса Пасанта, оскільки є приємний список, який дуже допоможе людям, які прийдуть на цю посаду через суфікси. Але дякую остаточно.
HCL

0

Коротка відповідь на оголошення «Десяткової» в C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Детальніше див. MSDN .

Надія комусь допомагає.


@Thomas, я розумію, але я просто намагався дати коротку відповідь для тих, хто шукає оголошення десяткової, чи слід видалити публікацію? , ви вважаєте, що це не корисно?
shaijut

3
Я вважаю це не корисним, але я далеко не ідеальний, і він може допомогти іншим. Якщо вдруге прочитаного ви вважаєте це не корисним, то можете його видалити. Якщо ви думаєте, що це комусь допоможе, залиште так, як є :)
Томас Аюб

2
@ThomasAyoub Особисто не бачите, що це додає, що відповідь Ганса вже не висвітлюється.
Ланкімарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.