Java:绝对值的最大值和最小值

3

我希望你能提供一个方法,输入两个浮点数A和B,返回绝对值较小的值(A或B)。

最初我尝试了以下方法:

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

但这是不正确的,因为例如对于(-9,-2),返回值是+2,我需要的返回值是-2。

是否有一些本地/内置的方法可以实现这个?


1
为什么会返回999呢? - Dennis Meng
示例不正确,已更新。 - Addev
2
-2 是正确的结果。 - Sean Owen
请查找Math.abs的作用。如果您只传入AB,则会得到-2 - Alex W
@Baz 我认为Sean的意思是OP想要“-2”。 - Dennis Meng
@Baz,问题总是要求具有较小绝对值的参数,尽管第一个示例不好。 - Sean Owen
5个回答

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

3
换句话说,可能没有内置功能,自己实现会更容易。 - Dennis Meng

7

我不赞成在本地变量中使用大写字母,但是

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

5

Math.min()返回两个参数中的最小值。在上面的示例中,您提供了9992作为参数(由Math.abs()生成的绝对值)。

您可以将Math.min()调用替换为以下内容:

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

4
val = (Math.abs(A) < Math.abs(B)) ? A : B; 

2

嗯,这是正确的行为。

你在Min函数内获取了两个数字的绝对值,该函数返回两个数字中的最小值。在你的情况下,这是2,因为你正在比较9和2。

编辑

据我所知,没有内置的方法可以实现你想要做的事情。正如其他人建议的那样,你必须自己进行比较,例如:

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

请记住,比较的类型和结果需要小心处理。


我知道它的正确行为,我正在寻求一种内置的方法来实现我的初始目标。 - Addev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接