1

我有一个将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]如果不是,则必须将这些值设置为默认值。

问题:如何简化这两个if条件和默认值的设置?

编辑:

我尝试使用条件运算符?,但实际上它并没有简单得多(甚至更难阅读),而且代码也并不少

附言。这个问题更多地用于教育目的。寻找不同的方法来检查变量的范围

4

1 回答 1

5

你可以使用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");
}
于 2017-09-07T08:31:38.820 回答