Упростите условия if при проверке диапазона и установке значения по умолчанию

У меня есть функция, которая преобразует double значение в sbyte и возвращает его шестнадцатеричное представление:

string convertToSByte(double num, double factor)
{

    double _Value = num * factor;

    if (_Value > 127)
    {
        _Value = 127;
    }
    else if (_Value < -127)
    {
        _Value = -127;
    }

    return Convert.ToSByte(_Value).ToString("X2");
}

Расчетный _Value должен быть в пределах диапазона [-127 ; 127] если нет, то эти значения должны быть установлены по умолчанию.

Вопрос: Как эти два, если условия и установка значений по умолчанию могут быть упрощены?

РЕДАКТИРОВАТЬ:

Я пытался использовать условный оператор ? но на самом деле это не намного проще (даже немного сложнее для чтения), а также не совсем меньше кода

пс. Этот вопрос служит скорее образовательной цели. Чтобы найти другой способ проверки диапазонов переменной

1 ответ

Решение

Вы могли бы использовать Min/Max

string convertToSByte(double num, double factor)
{
    var value = Math.Min(127, Math.Max(-127.0, num * factor));
    return Convert.ToSByte(value).ToString("X2");
}
Другие вопросы по тегам