C#将一个双精度variables转换为十进制

这对于一些人来说似乎是一个愚蠢的问题,但我需要投入一个双倍到十进制作为货币。 M去哪了?

decimal dtot = (decimal)(doubleTotal); 

你只使用M作为数字文字,当你施放它时:

 decimal dtot = (decimal)doubleTotal; 

请注意浮点数不适合保留一个确切的值,所以如果您先将数字相加,然后转换为Decimal您可能会得到舍入错误。 您可能希望将数字转换为Decimal数,然后再将它们加在一起,或者确保数字不是浮点数。

您可以像这样将一个double转换为小数,而不需要M文字后缀:

 double dbl = 1.2345D; decimal dec = (decimal) dbl; 

在声明新的文字十进制值时,应该使用M

 decimal dec = 123.45M; 

(没有M ,123.45被认为是double,不会被编译。)

使用默认的转换类: Convert.ToDecimal(Double)

 Convert.ToDecimal(the double you are trying to convert);