如果我想在代码中使用decimal-literal,我已经看到存在m后缀(其中m代表金钱).这是否适用于任何小数或存在更一般的分配(d代表double,即为了shure而不是正确的东西,虽然支持直接转换).
object decimalValue=2m;
Run Code Online (Sandbox Code Playgroud)
请注意,我以对象分配为例,因为在...的情况下
decimal decimalValue=2;
Run Code Online (Sandbox Code Playgroud)
...它隐含的明确,2应该通过编译器解释为十进制.
编辑: m似乎没问题,msdn使用它作为十进制类型的示例.
Han*_*ant 222
在C#语言规范中记录,第2.4.4节:
float f = 1.2f;
double d = 1.2d;
uint u = 2u;
long l = 2L;
ulong ul = 2UL;
decimal m = 2m;
Run Code Online (Sandbox Code Playgroud)
int,byte,sbyte,short,ushort都没有.
Bri*_*Kay 22
没有后缀,数字真实文字将是Double.m后缀指定数字实数应为十进制.
这一点实际上很重要,因为浮点值(例如Double)的算术是不精确的.例如:
object decimalValue=(5.32 + 2.23);
Run Code Online (Sandbox Code Playgroud)
这里,decimalValue实际上包含一个Double,意外值为7.5500000000000007!如果我想要7.55,我可以这样做:
object decimalValue=(5.32m + 2.23m);
Run Code Online (Sandbox Code Playgroud)
要回答关于是否存在更通用后缀的问题,m是C#中Decimal 的唯一后缀.它可能代表您提到的金钱,但他们确实使用了除d之外的其他东西,因为Double使用了它!
进一步阅读:十进制(C#参考)