在进行货币开发时,如何将其转换double
为decimal
哪种。在什么地方M
去?
decimal dtot = (decimal)(doubleTotal);
Answers:
您仅将M
用作数字文字,而将其强制转换为:
decimal dtot = (decimal)doubleTotal;
请注意,浮点数不适合保留确切的值,因此,如果您先将数字相加然后转换为Decimal
,则可能会舍入错误。您可能需要将数字转换为,Decimal
然后再将它们加在一起,或者确保数字首先不是浮点数。
使用默认的转换类: Convert.ToDecimal(Double)
Convert.ToDecimal(the double you are trying to convert);
double
to 进行类型转换decimal
,因为对于double
(1000000.0 / 3.0)这样的值,在某些情况下会想要裁剪“多余的”精度以产生333333.333333333D,但在其他情况下,则希望保留它,从而获得333333.3333333333139139D。代码不应简单地说“转换为小数”,而应指定如何执行该转换。
Convert.ToDecimal(double)
方法与相同(decimal)doubleTotal
,除非doubleTotal
更改为其他类型,否则可能会避免编译时错误并引入难于发现的运行时错误,因为使用了不同的 ToDecimal覆盖可能会被调用。演员更明确...
好吧,这是一个古老的问题,我确实利用了此处显示的一些答案。不过,在我的特定情况下double
,我想要转换为的值可能decimal
经常大于decimal.MaxValue
。因此,我没有处理异常,而是编写了此扩展方法:
public static decimal ToDecimal(this double @double) =>
@double > (double) decimal.MaxValue ? decimal.MaxValue : (decimal) @double;
如果您不想麻烦处理溢出异常,并且如果发生此类事情,您只想保持最大可能值(以我的情况为准),则上述方法有效,但是我知道对于许多其他情况,这不是预期的行为可能需要进行异常处理。