Суффикс объявления для десятичного типа


113

Если я хочу использовать десятичный литерал в коде, я видел, что существует m-суффикс (где m означает деньги). Подходит ли это для каких-либо десятичных знаков или существует более общее присвоение (d означает double, что, конечно, не правильно, хотя прямое преобразование поддерживается).

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'используя апострофы вокруг символа.
— Кевин Хогг,

Вы также можете обратиться к этому документу, который более удобен для
— Дуглас Гаскелл

22

Без суффикса числовой вещественный литерал будет Double. Суффикс m указывает, что числовой вещественный литерал должен быть Decimal.

На самом деле это важно знать, поскольку арифметические операции со значениями с плавающей запятой (такими как Double) неточны. Например:

object decimalValue=(5.32 + 2.23);

Здесь decimalValue фактически будет содержать Double с неожиданным значением 7,5500000000000007! Если бы я хотел 7,55, я мог бы сделать это:

object decimalValue=(5.32m + 2.23m);

Чтобы ответить на ваш вопрос о том, существует ли более общий суффикс, m - единственный суффикс для Decimal в C #. Это может означать деньги, как вы упомянули, но они действительно использовали что-то другое, кроме d, поскольку это используется Double!

Дополнительная литература: десятичное число (Справочник по C #)


1
Спасибо, я видел и вставил ссылку msdn в свой вопрос точно так же, как вы ввели свой ответ. Однако я принял сообщение Ханса Пассанта, потому что есть хороший список, который очень поможет людям, которые придут на этот пост из-за суффиксов. Но однозначно спасибо.
— HCL

0

Краткий ответ на объявление Decimal в C #

decimal firstMoney = 141.28m;

O / P: 141,28

decimal secondMoney = 100.00m;

O / P: 100

Для получения дополнительной информации обратитесь к MSDN .

Надежда кому-то помогает.


@ Томас, я понимаю, но я просто попытался дать краткий ответ тем, кто ищет объявление десятичной дроби, следует ли мне удалить сообщение? -А вы думаете, что это бесполезно?
— Shaijut 05

3
Я считаю, что это бесполезно, но я далек от совершенства, и это может помочь другим. Если при повторном чтении вы обнаружите, что это бесполезно, вы можете удалить его. Если вы думаете, что это кому-то поможет, оставьте все как есть :)
— Томас Аюб

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