十进制类型的声明后缀


113

如果我想在代码中使用十进制文字,我已经看到存在m后缀(其中m代表金钱)。这是否适用于任何小数或是否有更通用的赋值(d代表double,虽然支持直接转换,但肯定不是正确的选择)。

object decimalValue=2m;

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

decimal decimalValue=2;

...显然,编译器应将2解释为十进制。

m似乎还可以,msdn将其用作小数类型的示例。

Answers:



22

如果没有后缀,则数字实数文字将是Double。m后缀指定数字实数应为小数。

这一点实际上很重要,因为对浮点值(例如Double)的算术不精确。例如:

object decimalValue=(5.32 + 2.23);

在这里,十进制值实际上将包含一个Double,其意外值是7.5500000000000007!如果我想要7.55,可以这样做:

object decimalValue=(5.32m + 2.23m);

为了回答有关是否存在更通用的后缀的问题,m是C#中Decimal 的唯一后缀。正如您所提到的,它可能代表金钱,但是他们确实使用了d以外的其他东西,因为Double曾使用过它!

进一步阅读:十进制(C#参考)


1
谢谢,我已经看到并完全按照您输入答案的方式将msdn-link放入我的问题中。但是我接受了Hans Passant的职位,因为这里有一个不错的清单,该清单对于后缀名高的人将大有帮助。但一定要谢谢。
HCL 2010年

0

C#中声明十进制的简短答案

decimal firstMoney = 141.28m;

O / P: 141.28

decimal secondMoney = 100.00m;

O / P: 100

有关更多信息,请参见MSDN

希望可以帮助某人。


@Thomas,我知道,但我只是想为那些寻求声明小数的人提供简短答案,我应该删除帖子吗?,您认为它没有用吗?
shaijut

3
认为它没有用,我还远未达到完美,它可能会对其他人有所帮助。如果您在第二次阅读中发现它没有用,则可以将其删除。如果您认为这会帮助某人,请保持
现状

2
@ThomasAyoub就个人而言,看不出汉斯答案尚未涵盖的内容。
Lankymart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.