私は現在、パーセント値を返す次のメソッドを取得しています。たとえば、商品価格が $350,000 でパーセンテージが 7% の場合、24,500 が返されます。
public static decimal GetPercentValue(decimal? percentage, decimal baseValue)
{
decimal result = 0m;
if (percentage != null)
{
try
{
result = Convert.ToDecimal(baseValue * percentage / 100m);
}
catch (OverflowException)
{
result = 0;
Logger.Warn("OverflowException caught in GetPercentValue() - should better be handled UI-Sided!");
}
}
return result;
}
これが正しい方法で処理されているとは思わないので、この状況で例外を回避する方法はありますか?
999,999,999,999,999,999
ユーザーが非常識な数値を入力して計算すると、OverflowException がスローされ9999999999%
ます。このように、そうではないという理由だけで、percentage
またはチェックすることはできません... 計算結果自体が10進数の範囲を超えています。baseValue
<= decimal.MaxValue