十进制类型的声明后缀

时间:2010-07-17 14:08:19

标签: c# .net

如果我想在代码中使用decimal-literal,我已经看到存在m后缀(其中m代表金钱)。这是否适用于任何小数或存在更一般的分配(d代表双重,即不是正确的东西,虽然支持直接转换)。

object decimalValue=2m;

请注意,我以对象分配为例,因为在......

的情况下
decimal decimalValue=2;

...它隐含明确2应该通过编译器解释为十进制。

编辑: m 似乎没问题,msdn将其用作小数类型的示例。

3 个答案:

答案 0 :(得分:217)

C# language specification中记录,第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没什么。

答案 1 :(得分:22)

没有后缀,数字真实文字将是Double。 m后缀指定数字实数应为十进制。

这一点实际上很重要,因为对浮点值(例如Double)的算术是不精确的。例如:

object decimalValue=(5.32 + 2.23);

这里,decimalValue实际上包含一个Double,意外值为7.5500000000000007!如果我想要7.55,我可以这样做:

object decimalValue=(5.32m + 2.23m);

要回答关于是否有更通用后缀的问题,m是C#中Decimal的 only 后缀。它可能代表您提到的钱,但他们确实使用了除d以外的东西,因为Double使用了它!

进一步阅读:decimal (C# Reference)

答案 2 :(得分:0)

在C#中声明十进制

的简短回答
decimal firstMoney = 141.28m;

O / P: 141.28

decimal secondMoney = 100.00m;

O / P: 100

有关详情,请参阅MSDN

希望帮助某人。