我目前有以下方法,它返回我的百分比值。例如,对于 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
并计算9999999999%
它时,会引发 OverflowException。这样我就无法检查percentage
或仅仅baseValue
因为<= decimal.MaxValue
它们不是……计算结果本身就超出了小数范围。