如果我想在代码中使用十进制字面量,我看到存在m后缀(其中m代表货币)。这适用于任何小数吗?还是有更通用的赋值方式(d代表double,那肯定不是正确的事情,尽管支持直接转换)。
object decimalValue=2m;
请注意,我以对象赋值作为示例,因为在可以省略括号的情况下,只有当变量是对象时才需要使用括号来避免语法错误。decimal decimalValue=2;
从编译器的隐晦表述来看,2应该被解释为十进制.
m看起来没问题,msdn将其作为decimal类型的示例使用。
如果我想在代码中使用十进制字面量,我看到存在m后缀(其中m代表货币)。这适用于任何小数吗?还是有更通用的赋值方式(d代表double,那肯定不是正确的事情,尽管支持直接转换)。
object decimalValue=2m;
请注意,我以对象赋值作为示例,因为在可以省略括号的情况下,只有当变量是对象时才需要使用括号来避免语法错误。decimal decimalValue=2;
从编译器的隐晦表述来看,2应该被解释为十进制.
m看起来没问题,msdn将其作为decimal类型的示例使用。
参考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'
。 - Kevin Hogg如果数值实字面量没有后缀,它将默认为Double类型。而加上m后缀则表示数值实字面量应该是Decimal类型。
这一点很重要,因为对浮点数(如Double)进行算术运算是不精确的。例如:
object decimalValue=(5.32 + 2.23);
在这里,decimalValue实际上会包含一个Double类型的值,其意外的值为7.5500000000000007!如果我想要7.55,我可以这样做:
object decimalValue=(5.32m + 2.23m);
回答你关于是否有更通用的后缀的问题,m是在C#中Decimal类型的唯一后缀。它可能代表金钱,就像你提到的那样,但是他们必须使用与double不同的字符,因为d已经被double使用了!在C#中声明十进制的简短回答为Declare Decimal in C#
decimal firstMoney = 141.28m;
输出:141.28
decimal secondMoney = 100.00m;
输出: 100
更多参考请查看MSDN。
希望能对某些人有所帮助。
variableM
中有小数值,它应该可以工作。 - Shaiju T