2016-11-15 40 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

相關問題