2012-08-09 38 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