在JavaScript中将负数转换为正数

时间:2011-01-10 22:10:55

标签: javascript

JavaScript中有数学函数可以将数字转换为正值吗?

16 个答案:

答案 0 :(得分:594)

你可以用这个......

Math.abs(x)

Math​.abs() | MDN

答案 1 :(得分:87)

x *= -1怎么样?我喜欢它的简洁。

答案 2 :(得分:44)

Math.abs(x)或者,如果您确定,则转化前的值为负数,只是在前面添加常规减号:x = -x

答案 3 :(得分:27)

减号( - )可以将正数转换为负数,将负数转换为正数。 x=-yx=(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.

这不会起作用precedencenum++之类的后缀运算符将在〜之前被评估,并且原因前缀++num即使与bitwise具有相同的优先级也不会起作用NOT(〜),是因为它从右到左进行评估。我确实试图交换它们,但似乎与按位NOT相比,前缀有点挑剔。 +1会起作用,因为&#39; +&#39;具有更高的优先级,稍后将进行评估。

我发现这个解决方案非常有趣,并且决定扩展它,因为它只是在那里被抛出,并且看到它的人可能会忽略它。虽然是的,它不适用于花车。

我希望这篇文章不会偏离原来的问题。 :/

答案 10 :(得分:2)

我的最小方法

将负数转换为正数&amp;反之亦然

&#13;
&#13;
var num = -24;
num -= num*2;
console.log(num)
// result = 24
&#13;
&#13;
&#13;

答案 11 :(得分:2)

乘以(-1)是将负数转换为正数的最快方法。但是你必须要小心,不要将我的错误转换为正数!因此需要额外检查......

然后Math.abs,Math.floor和parseInt是最慢的。

enter image description here

https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1

答案 12 :(得分:0)

您可以使用运算符从逻辑上将数字转换为负数,并将负数加1:

&#13;
&#13;
var x = 3;
x = (~x + 1);
console.log(x)
// result = -3
&#13;
&#13;
&#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为此提供了一种不错的方法。从正到负,反之亦然。

https://ramdajs.com/docs/#negate

答案 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会做一些疯狂的事情,所以我不能肯定地说。