为什么在声明小数的时候要用M呢?
本文关键字:声明 小数 为什么 | 更新日期: 2023-09-27 18:04:00
当我尝试这样声明变量时:
decimal order = 5.0;
我得到错误消息" double类型的文字不能隐式转换为'decimal'类型;使用"M"后缀来创建这种类型的升。"
谁能解释一下为什么需要M ?
类型为double
的任何带有小数点但没有后缀的数字字面值。来自c# 5规范,第2.4.4.3节:
如果不指定real-type-suffix,则实字面值的类型为
double
。否则,实类型后缀决定实文字的类型,如下所示:[…]
没有从double
到decimal
的隐式转换,因此尝试将double
值赋给decimal
变量失败。
如果你想要一个float
值,你会得到同样的东西:
float x = 5.0; // Nope, same problem
可以显式地转换为 MSDN:decimal c# reference 如果您希望将数字实字面值视为小数,请使用后缀m或m,例如: 如果没有后缀m,则将该数字视为双精度数并生成编译错误。float
或decimal
,但这对于float
来说是一个坏主意,而对于decimal
来说,非常坏主意。decimal myMoney = 300.5m;