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'實際上不應該被拋出。 –