c# - 检查范围和设置默认值时简化 if 子句

标签 c# if-statement sbyte

我有一个函数可以将 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条件和默认值的设置如何简化?

编辑:

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

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

最佳答案

你可以使用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");
}

关于c# - 检查范围和设置默认值时简化 if 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46091482/

相关文章:

c# - 如何将 C# 类似字符串的变量传递给 sbyte* 参数?

c# - ViewDidAppear 导致我的标签消失(Xamarin.ios,C#)

c# - 使用 SSIS - 查询事件目录的来源

c# - 为什么 C# 不让我像字典一样对动态进行索引?

c# - 无法将 ICollection<t> 转换为 IEnumerable<t>

c - 长 if..else 语句

python - 将多个 if 语句放入 python pandas 的一个 if 语句中

apache - 基于服务器名称/路径的 htaccess 条件语句