![](/img/trans.png)
[英]to compare double and decimal should I cast double to decimal or decimal to double?
[英]Cast a Double Variable to Decimal
在进行货币开发时如何将double
为decimal
。 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 被视为双精度值并且不会编译。)
使用默认转换类: Convert.ToDecimal(Double)
Convert.ToDecimal(the double you are trying to convert);
嗯,这是一个老问题,我确实利用了此处显示的一些答案。 尽管如此,在我的特定场景中,我想要转换为decimal
的double
值可能通常大于decimal.MaxValue
。 所以,我写了这个扩展方法,而不是处理异常:
public static decimal ToDecimal(this double @double) =>
@double > (double) decimal.MaxValue ? decimal.MaxValue : (decimal) @double;
如果您不想费心处理溢出异常,则上述方法有效,并且如果发生这种情况,您只想保持最大可能值(我的情况),但我知道对于许多其他情况,这不是预期的行为并且可能需要异常处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.