在Javascript中获取数字的绝对值

Dan*_*ley 53 javascript

我想在JavaScript中获取数字的绝对值.也就是说,放下标志.我在数学上知道我可以通过平方数然后取平方根来做到这一点,但我也知道这是非常低效的.

x = -25
x = x * x 
x = sqrt(x)

// x would now be 25 
Run Code Online (Sandbox Code Playgroud)

在JavaScript中有没有办法简单地删除一个比数学方法更有效的数字的符号?

Dar*_*rov 102

你的意思是得到一个数字的绝对值?该Math.absJavaScript函数正是为此而设计的.

var x = -25;
x = Math.abs(x); // x would now be 25 
Run Code Online (Sandbox Code Playgroud)

以下是文档中的一些测试用例:

Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs("string"); // NaN
Math.abs();         // NaN
Run Code Online (Sandbox Code Playgroud)


End*_*imo 12

这是获取数字绝对值的快速方法.它适用于所有语言:

(x ^ (x >> 31)) - (x >> 31);
Run Code Online (Sandbox Code Playgroud)

  • 这是否假设32位数? (14认同)
  • 和2的补充? (3认同)
  • 所有javascript数字都是双浮点32位 (2认同)

Ric*_*ick 7

如果您想了解JavaScript如何在幕后实现此功能,您可以查看此帖子.

博客文章

这是基于铬源代码的实现.

function MathAbs(x) {
  x = +x;
  return (x > 0) ? x : 0 - x;
}
Run Code Online (Sandbox Code Playgroud)

  • @AndreFigueiredo - 我认为它回答得很好,虽然肯定有点简洁.它建议你可以使用`absx = Math.abs(x);`或者你可以创建一个函数(`MathAbs`)甚至直接使用`absx =(x> 0)?x:0 - x;`.也许在答案中加入类似的陈述会有所帮助. (2认同)