是否有针对3种情况的if(小于零,大于零,零)的内置函数?

时间:2018-12-03 02:35:27

标签: c# math

我想问一下是否有内置的C#语句,该语句可以使我用更少的代码行编写以下内容:

float fH = Input.GetAxis("Horizontal"); //doesn't really matter where this comes from, but in this case, it's the user's input on a joystick

if (fH < 0)
{
    fH = -1;
}
else if (fH > 0)
{
    fH = 1;
}
else
{
    //don't change anything
}

据我所知,我不能使用

fH = if(...)

因为这只允许2种情况,而我需要3种情况(小于0,大于0或0)。

2 个答案:

答案 0 :(得分:7)

Math.Sign将返回输入是正,负还是0,仅需一条语句(根本不需要if)。

Math.Sign(-2) 
-1
Math.Sign(-3.3)
-1
Math.Sign(3)
1
Math.Sign(0)
0

它返回一个int32,您可以在执行操作时将其重新分配回float

fH = Math.Sign(fH);

答案 1 :(得分:3)

我不确定我的答案是否是您需要的,但是您可以将代码简化为一行代码。

if (fH < 0)
{
    fH = -1;
}
else if (fH > 0)
{
    fH = 1;
}
else
{
    //don't change anything
}

将上面的代码变成下面的一行代码。

fH = (fH < 0) ? -1 : ((fH > 0) ? 1 : 0);

代码中的else部分提到fH的值不变。仅当fH值为0时才可执行。因此,我将零值放在一行代码的末尾。