11
我使用如何Decimal.Round()抛出OverflowException异常
Decimal.Round(decimal d)
MSDN说,它可以抛出OverflowException
https://msdn.microsoft.com/en-us/library/k4e2bye2(v=vs.110).aspx
我不知道怎么说都有可能发生。我试图寻找过使用ilSpy 实施和GOT直到外部实现的:
// decimal
[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void FCallRound(ref decimal d, int decimals);
有谁有什么线索输入抛出此异常?
http://stackoverflow.com/questions/3203959/overflow-例外时除以两位十进制网内 – Equalsk
FWIW,[这是其中](https://github.com/dotnet/coreclr/blob/32f0f9721afb584b4a14d69135bea7ddc129f755/src/classlibnative/bcltype/decimal.cpp#L175)该目标调用是在.NET Core CLR中实现的 - 您可以在第188行看到“OverflowException”的抛出。 –
并且[出现](https://github.com/dotnet/coreclr/blob/32f0f9721afb584b4a14d69135bea7ddc129f755/src/ palrt/decarith.cpp#L1215)是'VarDecRound'的实现。乍一看,我看不出为什么它会将失败结果返回给'FCallRound'(导致引发异常)。它或者返回'E_INVALIDARG',但是它的条件已经被'FCallRound'或'NOERROR'检查过了,所以它看起来'OverflowException'实际上不应该被抛出。 –