我正在使用
Decimal.Round(decimal d)
MSDN说它可能会抛出OverflowException
https://msdn.microsoft.com/en-us/library/k4e2bye2(v=vs.110).aspx
我不确定那是怎么发生的。我试着用ilSpy查看实现,一直到外部实现为止:
// decimal
[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void FCallRound(ref decimal d, int decimals);
有人知道什么样的输入会抛出这个异常吗?
VarDecRound
函数的实现。乍一看,我无法理解为什么它会向FCallRound
返回失败结果(导致引发异常)。它要么返回E_INVALIDARG
,但该条件已被FCallRound
检查过,要么返回NOERROR
,因此似乎不应该引发OverflowException
异常。 - James Thorpe