Mon*_*Zhu 1 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");
}
Run Code Online (Sandbox Code Playgroud)
计算出的_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");
}
Run Code Online (Sandbox Code Playgroud)