JavaScript中有数学函数可以将数字转换为正值吗?
答案 0 :(得分:594)
答案 1 :(得分:87)
x *= -1
怎么样?我喜欢它的简洁。
答案 2 :(得分:44)
Math.abs(x)
或者,如果您确定,则转化前的值为负数,只是在前面添加常规减号:x = -x
。
答案 3 :(得分:27)
减号( - )可以将正数转换为负数,将负数转换为正数。 x=-y
是x=(y*-1)
的视觉糖。
var y = -100;
var x =- y;
答案 4 :(得分:12)
unsigned_value = Math.abs(signed_value);
答案 5 :(得分:12)
var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ...
我觉得这个解决方案很容易理解。
答案 6 :(得分:7)
如果您想编写其他人无法更新的有趣代码,请尝试以下操作:
〜--x
答案 7 :(得分:5)
我知道这有点晚了,但是对于那些苦苦挣扎的人来说,你可以使用
将负转换为正
let x = -54;
let result = Math.abs(x);
将正面转换为负面
let x = 54;
let result = -Math.abs(x)
或者你可以简单地做这个简短的方法。
将正转换为负转换副Versa
let x = -23;
let result = -(23)
答案 8 :(得分:5)
否定为正
var X = -10 ;
var number = Math.abs(X); //result 10
正面到负面
var X = 10 ;
var number = (X)*(-1); //result -10
答案 9 :(得分:2)
我自己做了类似的事。
num<0?num*=-1:'';
检查数字是否为负数,如果是,则乘以-1 这确实会返回一个值,如果您捕获它,它将取决于您。如果你想将它分配给某些东西,你应该做类似的事情:
var out = num<0?num*=-1:num; //I think someone already mentioned this variant.
但这实际上取决于你的目标。对我来说这很简单,如果是消极的话就让它变得积极,否则什么都不做。因此,&#39;&#39;在代码中。 在这种情况下,我使用了三级运算符,因为我想,它很可能是:
if(num<0)num*=-1;
我在这里看到了一个按位解决方案,也想对那个问题发表评论。
~--num; //Drawback for this is that num original value will be reduced by 1
我认为这种灵魂非常花哨,我们可以像这样重写:
~(num = num-1);
简单来说,我们取负数,取一个然后逐位反转它。如果我们通常按位反转,我们会得到一个太小的值1。 你也可以这样做:
~num+1; //Wont change the actual num value, merely returns the new value
这将做同样的事情,但会先反转然后再加1到正数。 虽然你不能这样做:
~num++; //Wont display the right value.
这不会起作用precedence,num++
之类的后缀运算符将在〜之前被评估,并且原因前缀++num
即使与bitwise具有相同的优先级也不会起作用NOT(〜),是因为它从右到左进行评估。我确实试图交换它们,但似乎与按位NOT相比,前缀有点挑剔。
+1会起作用,因为&#39; +&#39;具有更高的优先级,稍后将进行评估。
我发现这个解决方案非常有趣,并且决定扩展它,因为它只是在那里被抛出,并且看到它的人可能会忽略它。虽然是的,它不适用于花车。
我希望这篇文章不会偏离原来的问题。 :/
答案 10 :(得分:2)
我的最小方法
将负数转换为正数&amp;反之亦然强>
var num = -24;
num -= num*2;
console.log(num)
// result = 24
&#13;
答案 11 :(得分:2)
乘以(-1)是将负数转换为正数的最快方法。但是你必须要小心,不要将我的错误转换为正数!因此需要额外检查......
然后Math.abs,Math.floor和parseInt是最慢的。
https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1
答案 12 :(得分:0)
您可以使用〜运算符从逻辑上将数字转换为负数,并将负数加1:
var x = 3;
x = (~x + 1);
console.log(x)
// result = -3
&#13;
答案 13 :(得分:0)
我知道另一种方法。这种技术对正面和正面都有负面影响。副Versa
var x = -24;
var result = x * -1;
反之亦然:
var x = 58;
var result = x * -1;
LIVE CODE:
// NEGATIVE TO POSITIVE: ******************************************
var x = -24;
var result = x * -1;
console.log(result);
// VICE VERSA: ****************************************************
var x = 58;
var result = x * -1;
console.log(result);
// FLOATING POINTS: ***********************************************
var x = 42.8;
var result = x * -1;
console.log(result);
// FLOATING POINTS VICE VERSA: ************************************
var x = -76.8;
var result = x * -1;
console.log(result);
答案 14 :(得分:0)
对于函数式编程,Ramda为此提供了一种不错的方法。从正到负,反之亦然。
答案 15 :(得分:-1)
如果您希望数字始终为正,无论您做什么都可以。
function toPositive(n){
if(n < 0){
n = n * -1;
}
return n;
}
var a = toPositive(2); // 2
var b = toPositive(-2); // 2
您也可以尝试此方法,但是我不推荐这样做:
function makePositive(n){
return Number((n*-n).toString().replace('-',''));
}
var a = makePositive(2); // 2
var b = makePositive(-2); // 2
此问题是您可以将数字更改为负数,然后转换为字符串并从字符串中删除-,然后转换回int。我想这将比使用其他功能需要更多的处理。
我已经在php中进行了测试,第一个功能更快,但是有时JS会做一些疯狂的事情,所以我不能肯定地说。