C# 检查范围和设置默认值时简化if子句
我有一个函数,它将一个C# 检查范围和设置默认值时简化if子句,c#,if-statement,sbyte,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;
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");
}
string convertToSByte(双数值,双因子)
{
double _值=num*因子;
如果(_值>127)
{
_数值=127;
}
否则如果(_值<-127)
{
_值=-127;
}
返回Convert.ToSByte(_值).ToString(“X2”);
}
计算的\u值
应在[-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");
}
您可以使用
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");
}
壮观的非常感谢你。我等了一会儿,等待其他答案的到来,但你的帖子是第一个接受正确答案的候选人。太棒了!非常感谢你。我等着其他答案的到来,但你的帖子是第一个接受正确答案的候选人。你为什么需要简化?您的代码非常简单、直接且易于理解。@HimBromBeere我想是为了学会用不同的方式思考。它更具有教育效果。在生产代码中,我总是喜欢这种我发布的写作方式为什么需要简化?您的代码非常简单、直接且易于理解。@HimBromBeere我想是为了学会用不同的方式思考。它更具有教育效果。在生产代码中,我总是喜欢我发布的这种写作方式