2016-11-15 68 views
0

这是代码(JAVA):如果我不知道变量是否为正数/负数,如何在不调用函数或使用if的情况下使其变为正数?

float yd = waypointY - currentY; 
    if (yd < 0) { 
     yd = yd*(-1); 
    } 

我不认为这是做到这一点的最好办法,并且已经搜查,但只发现当你已经知道,如果是阳性或阴性结果。我永远不知道waypointY是否比currentY更多或更少。

+1

在大多数语言'if'不是一个功能。你有什么是一个很常见的模式。我不会为此担心。我可能会把它改成'yd * = -1;'如果我的语言支持它的话。 – John3136

回答

0

AFAIK,如果没有,这是不可能的。或者一些变化。也许得到符号位并乘以某些东西并添加一些内容并执行某些操作?这似乎太复杂了,任何特殊的原因,如果不使用?

编辑: 你可以使用一个三元(或任何它被称为)的表达:

x = y < 0 ? -y : y; 
+0

我只是想知道是否有更有效的方法来做到这一点。不过你的例子教会了我一些新的东西,谢谢。 :) – djokerndthief

2

如果使用java,有一个API就可以使用,Math.abs(x-y)它将返回的绝对值x-y并且如下ABS API的源码:

public static float abs(float a) { 
    return (a <= 0.0F) ? 0.0F - a : a; 
} 
+0

但这意味着调用一个函数,它本质上不比简单的if语句更有效。正确? (我不确定) – djokerndthief

相关问题