检查范围和设置默认值时简化 if 子句
Simplify if-clauses when checking for range and setting default value
我有一个函数可以将 double
值转换为 sbyte
和 returns 其十六进制表示形式:
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条件和默认值的设置如何简化?
编辑:
我尝试使用条件运算符 ?
但实际上它并没有简单多少(甚至更难阅读)而且代码也没有减少
ps。这个问题更多的是用于教育目的。找到一种不同的方法来检查变量的范围
您可以使用 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");
}
我有一个函数可以将 double
值转换为 sbyte
和 returns 其十六进制表示形式:
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条件和默认值的设置如何简化?
编辑:
我尝试使用条件运算符 ?
但实际上它并没有简单多少(甚至更难阅读)而且代码也没有减少
ps。这个问题更多的是用于教育目的。找到一种不同的方法来检查变量的范围
您可以使用 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");
}