“M”在十进制值赋值中代表什么
本文关键字:什么 赋值 十进制 | 更新日期: 2023-09-27 18:31:29
MSDN 说:
"如果没有后缀m,该数字将被视为双精度,从而产生编译器错误。
"M"在什么地方:
decimal current = 10.99M;
代表?
它与以下方面有什么不同吗:
decimal current = (decimal)10.99
M 使数字在代码中成为十进制表示形式。
回答您问题的第二部分,是的,它们是不同的。
decimal current = (decimal)10.99
与
double tmp = 10.99;
decimal current = (decimal)tmp;
现在对于大于西格玛的数字,这应该不是问题,但如果你的意思是十进制,你应该指定十进制。
更新:
哇,我错了。我去检查 IL 以证明我的观点,编译器对其进行了优化。
更新 2:
我毕竟是对的!,你还是要小心的。比较这两个函数的输出。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Test1());
Console.WriteLine(Test2());
Console.ReadLine();
}
static decimal Test1()
{
return 10.999999999999999999999M;
}
static decimal Test2()
{
return (decimal)10.999999999999999999999;
}
}
第一个返回10.999999999999999999999
但 seccond 返回11
作为旁注,double将为您提供15个十进制数字的精度,
但十进制将为您提供96位精度,比例因子从0到28。因此,您可以表示范围内的任何数字((-296 到 296)/10(0 到 28))
说明
decimal current = 10.99M;
告诉编译器您需要一个十进制数。
decimal current = (decimal)10.99
告诉编译器要将双10.99
转换为小数。
有人说它代表金钱。M 因为您必须在金融应用程序中使用小数。必须使用小数,因为它们比浮点数(双精度)更准确。
十进制后缀是 M/m,因为 D/d 已经取了双倍。虽然有人认为M代表钱,但彼得·戈尔德回忆说,M只是被选为十进制的下一个最佳字母。
小数点比双精度具有更多的有效数字,因此它可以更精确 - 它也占用了更多的内存。除了某些数学或物理相关的算法外,双精度或浮点数应该可以正常工作。
例如
如果你做 ANYNUMBER/0.5d,你不会得到 ANYNUMBER 的一半。
如果你做 ANYNUMBER/0.5m,你每次都会得到 ANYNUMBER 的一半。
用
decimal
赚钱使用
double
汇率
更多信息
- 十进制与双精度 - 差异?
- 每个程序员都应该知道的关于浮点运算的知识
嗯...我认为"D"会与double
混淆,所以...他们选择了"M"? 也许是为了"钱"? 好像有点傻...但我找不到任何确定的东西。