为什么在声明小数时需要使用M.

时间:2015-07-22 19:07:31

标签: c#

当我尝试声明这样的变量时:

decimal order = 5.0;

我收到错误消息“double类型的文字不能隐式转换为'decimal'类型;使用'M'后缀来创建此类型的升。”

有人可以解释为什么需要M吗?

2 个答案:

答案 0 :(得分:2)

任何带小数点但没有后缀的数字文字都是double类型。从C#5规范,第2.4.4.3节:

  

如果未指定 real-type-suffix ,则真实文字的类型为double。否则,实际类型后缀确定实际文字的类型,如下所示:[...]

没有从doubledecimal的隐式转换,因此尝试将double值分配给decimal变量失败。

如果你想要float值,你会得到同样的东西:

float x = 5.0; // Nope, same problem

float的坏主意。

答案 1 :(得分:0)

MSDN:decimal C# reference

  

如果要将数字实数文字视为十进制,请使用   后缀m或M,例如:

     

decimal

     

如果没有后缀m,则将该数字视为double并生成   编译错误。