我想在JavaScript中获取一个数的绝对值。也就是说,去掉符号。
我知道从数学上讲,可以通过平方该数字然后取平方根来实现这一点,但我也知道这种方法效率非常低下。
x = -25
x = x * x
x = Math.sqrt(x)
console.log(x)
在JavaScript中,是否有一种比数学方法更有效的方式来简单地删除数字的符号?
x = -25
x = x * x
x = Math.sqrt(x)
console.log(x)
在JavaScript中,是否有一种比数学方法更有效的方式来简单地删除数字的符号?
这里有一种快速获取数值绝对值的方法。它适用于任何编程语言:
x = -25;
console.log((x ^ (x >> 31)) - (x >> 31));
(Math.pow(2,32)-1)|0 === -1
與 4294967295
不同。 - Patrick Roberts如果你想了解JavaScript如何在幕后实现这个功能,可以查看这篇文章。
以下是基于Chromium源代码的实现。
function MathAbs(x) {
x = +x;
return (x > 0) ? x : 0 - x;
}
console.log(MathAbs(-25));
absx=Math.abs(x);
或者创建一个函数(MathAbs
),甚至直接使用 absx=(x > 0) ? x : 0 - x;
。也许在答案中添加类似的语句会更有帮助。 - Kevin Fegan替代方案
Math.max(x,-x)
let abs = x => Math.max(x,-x);
console.log( abs(24), abs(-24) );
此外,Rick的回答也可以简化为 x>0 ? x : -x
var x = -25;
+`${x}`.replace('-', '');
Math.abs(-25); // 25
翻译:Math.abs(-25); // 25
的意思是取 -25 的绝对值,结果为 25。 - davinjQuery.abs()
? - Tomasz Nurkiewicz