C#中的decimal数据类型为什么不能直接赋值?

来源:百度知道 编辑:UC知道 时间:2024/05/28 07:57:50
比如这条语句:
decimal a=3.14;
编译器会提示出错,而改为:
decimal a=3.14M;
这样不会出错,请各位帮忙解释一下这是怎么回事。

不是不能直接赋值,而是写法的问题,直接写 3.14 编译器会认为这是一个双精度数而非decimal,而从double到decimal是不可以隐式转换的,所以会报错,后面加上了M以后就表示这是告诉编译器这就是个decimal,所以可以直接赋值。

至于为什么双精度型(double)到实数(decimal)不可隐式转换,是因为后者精度更高,但是其数值表示范围反倒不如前者大。