저는 현재 다음 값을 리턴하는 방법을 가지고 있습니다. 예를 들어 항목 가격이 $ 350,000이고 퍼센트가 7 %이면 24,500을 반환합니다.계산이 MaxValue를 초과하는지 확인하십시오.
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이 throw됩니다. 이 방법은 에 대한 percentage
또는 baseValue
을 확인할 수 없습니다. 계산 결과 자체가 소수점 이하를 초과합니다.
'나는 이것이 올바른 방향으로 다루어 져야한다고 생각하지 않는다.'- 어떻게 의미하니? 올바른 방법이 어떠해야한다고 생각하는지는 명확하지 않습니다. – Oded
79228162514264337593543950335 인 최대 값을 초과하는 경우 어프로치를 재고하고 싶습니까? – coolmine
@Oded 간단한 if 문에 의한 'OverflowException'의 막대한 비용이 들지 않으면 이것이 가능해야한다고 생각합니다. – SeToY