【问题标题】:Declaration suffix for decimal type十进制类型的声明后缀
【发布时间】:2011-03-17 08:29:02
【问题描述】:

如果我想在代码中使用十进制文字,我已经看到存在 m 后缀(其中 m 代表金钱)。这适用于任何小数还是有更一般的赋值(d 代表双精度,尽管支持直接转换,但这肯定不是正确的)。

object decimalValue=2m;

请注意,我以对象赋值为例,因为在...的情况下...

decimal decimalValue=2;

... 2 应该通过编译器解释为十进制。

m 好像没问题,msdn 用它作为小数类型的例子。

【问题讨论】:

  • M 可以代表钱,但它可能只是单词“十进制”的下一个可用字母,因为 D 用于双精度,E 用作指数符号,例如在 '1E06' 中。

标签: c# .net


【解决方案1】:

记录在C# language specification,第 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 没有。

【讨论】:

【解决方案2】:

在 C# 中声明十进制

的简短回答
decimal firstMoney = 141.28m;

O/P: 141.28

decimal secondMoney = 100.00m;

O/P: 100

更多信息请参考MSDN

希望能帮助别人。

【讨论】:

  • @Thomas ,我明白,但我只是想为那些搜索声明小数的人提供简短的答案,我应该删除帖子吗? ,你觉得没用?
  • 认为它没有用我远非完美,它可能帮助他人。如果在第二次阅读中您发现它没有用,那么您可以将其删除。如果您认为它会对某人有所帮助,请保持原样:)
  • @ThomasAyoub 就个人而言,看不出这增加了Hans answer 尚未涵盖的内容。
【解决方案3】:

如果没有后缀,数字实数将是 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 的 only 后缀。正如您提到的,它可能代表金钱,但他们确实使用了 d 以外的东西,因为 Double 使用了它!

延伸阅读:decimal (C# Reference)

【讨论】:

  • 谢谢,我已经看到 msdn-link 并将其放入我的问题中,就像您输入答案一样。然而,我接受了 Hans Passant 的职位,因为有一个很好的列表,对那些因为后缀而来到这个职位的人有很大帮助。但是非常感谢。
猜你喜欢
  • 2011-07-17
  • 2016-11-23
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多