Если пределы [-10, 0]
, а результат - -5
, с текущим кодом вы будете эффективно проверять, находится ли 5
в [11, 19]
, что неверно.
Iпредложите сохранить знак увеличения / уменьшения их границ на 1/10 диапазона, а затем сравнить исходное значение результата с этим уменьшенным диапазоном:
double deltaAbsolute = Math.Abs(limits.High - limits.Low);
double lowerThreshold = limits.Low + 0.1 * deltaAbsolute;
double upperThreshold = limits.High - 0.1 * deltaAbsolute;
if (result >= upperThreshold)
{
"".Dump("Upper threshold violated");
return true;
}
if (result <= lowerThreshold)
{
"".Dump("Lower threshold violated");
return true;
}