2012-08-09 129 views
2

我正在尋找一種給出2個浮點數的方法A和B以較低的絕對值返回值(A或B)。Java:最大值和最小值(絕對值)

起初我試圖

Math.min(Math.abs(A),Math.abs(B)); 

,但它是不正確的,因爲例如用於(-9,-2)返回+2,我期待的返回值爲-2。

是否有一些本機/內置的?

+1

呃,爲什麼會返回999? – 2012-08-09 17:05:51

+0

該示例不正確,已更新 – Addev 2012-08-09 17:07:02

+2

-2是正確的結果 – 2012-08-09 17:07:50

回答

10
Math.abs(A) < Math.abs(B) ? A : B; 
+3

(換句話說,可能沒有內置的功能,並且它更容易實現) – 2012-08-09 17:08:55

1

嗯,這是一個正確的行爲。

您將得到Min funcion中兩個數字的絕對值,它們返回兩者的最小值。在你的情況這2因爲你比較9和2

編輯

AFAIK有沒有內置的方式做你想做的事情。正如其他人所建議的那樣,您必須使用類似的方法進行比較:

Math.abs(A) < Math.abs(B) ? A : B 

只要記住要小心您比較的類型和結果。

+0

我知道它的正確行爲,我正在尋求一種內置的方式來實現我的初始目標 – Addev 2012-08-09 17:09:15

4

Math.min()返回傳遞給它的兩個參數中最小的一個。在上面的例子中,你向它提供的9992參數(由Math.abs()產生的絕對值

你可能喜歡的東西取代Math.min()電話:

Math.abs(A) < Math.abs(B) ? A : B; 
3
val = (Math.abs(A) < Math.abs(B)) ? A : B; 
+0

Auuggh,提前15秒我... – Malvolio 2012-08-09 17:10:52

6

我不贊成使用局部變量的大寫字母,但是

(Math.abs(A) < Math.abs(B)) ? A : B 
相關問題