3

我正在寻找一种方法,给定 2 个浮点数 A 和 B 返回绝对值较低的值(A 或 B)。

最初我尝试过

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

但这是不正确的,因为例如对于 (-9,-2) 返回 +2 并且我正在寻找的返回值是 -2。

是否有一些本机/内置的?

4

5 回答 5

11
Math.abs(A) < Math.abs(B) ? A : B;
于 2012-08-09T17:08:21.090 回答
7

我不赞成对局部变量使用大写,但是

 (Math.abs(A) < Math.abs(B)) ? A : B
于 2012-08-09T17:10:22.370 回答
5

Math.min()返回传递给它的两个参数中的最小值。在上面的示例中,您为其提供了参数9992(由Math.abs().

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

Math.abs(A) < Math.abs(B) ? A : B;
于 2012-08-09T17:08:20.883 回答
4
val = (Math.abs(A) < Math.abs(B)) ? A : B; 
于 2012-08-09T17:10:09.017 回答
2

嗯,这是一个正确的行为。

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

编辑

AFAIK 没有内置的方法来做你想做的事。正如其他人所建议的那样,您必须自己进行比较,例如:

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

请记住要小心您比较的类型和结果。

于 2012-08-09T17:07:54.917 回答