在JavaScript中将负数转换为正数

dav*_*ave 282 javascript

JavaScript中是否有数学函数将数字转换为正值?

Chr*_*l52 642

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

Math.abs(x)
Run Code Online (Sandbox Code Playgroud)

  • @omgaz他们不一样......`var x = -100; ~x + 1 === 100`但是`var x = 100; ~x + 1 === -100`.`Math.abs`总是使它成为正数,而采用补数只是反转符号. (20认同)
  • 您甚至可能想考虑~x+1。它非常快,但不清楚它在做什么。对此进行了鞭打以显示差异:http://jsperf.com/absolute-int (2认同)

gnc*_*ais 91

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

  • 虽然这很简单,但它假设数字总是负数.如果用例是这样的话,那就太棒了.否则,我建议谨慎. (15认同)
  • 我不同意@myusuf.任何数字都是"x"将被翻转.如果`x = 23`并被推入该等式,则`x`将等于`-23`.用埃斯卡兰特先生的话说,"正面时间负面等于负面.负面时间负面等于正面." ......"我如何达到这些kiiiiiiids?!" (4认同)
  • 昨天正好@Shane.如果`x = 23`,那么它将变成-23.问题是,'在JS中将负数转换为正数',但上述内容将翻转任何数字,无论是正数还是负数. (2认同)
  • 了解.我对你的评论的解释是在翻转数字的背景下,而不是让"x"始终为正.我道歉@myusuf. (2认同)

orl*_*rlp 46

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


Hig*_*ife 28

减号( - )可以将正数转换为负数,将负数转换为正数.x=-y是视觉糖x=(y*-1).

var y = -100;
var x =- y;
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 13

unsigned_value = Math.abs(signed_value);
Run Code Online (Sandbox Code Playgroud)


Mar*_*rkD 12

var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ... 
Run Code Online (Sandbox Code Playgroud)

我觉得这个解决方案很容易理解.


小智 7

如果您想编写其他人无法更新的有趣代码,请尝试以下方法:

〜--X

  • 不过,这不适用于浮点数……而且 x 的值也会发生变化。 (2认同)
  • Kyle,`~` 运算符确实将数字转换为 32 位整数。如果你有一个浮点数作为输入,它就会被冲洗掉。 (2认同)

Mah*_*our 7

负向正

var X = -10 ;
var number = Math.abs(X);     //result 10
Run Code Online (Sandbox Code Playgroud)

正负

var X = 10 ;
var number = (X)*(-1);       //result -10
Run Code Online (Sandbox Code Playgroud)


Ade*_*ran 5

我知道这有点晚了,但对于那些苦苦挣扎的人来说,你可以使用

用于将负数转换为正数

let x = -54;
let result = Math.abs(x);
Run Code Online (Sandbox Code Playgroud)

用于将正转换为负

let x = 54;
let result = -Math.abs(x)
Run Code Online (Sandbox Code Playgroud)

或者你可以简单地做这个简短的方法.

用于将正向转换为负向和反向通用

let x = -23;
let result = -(23)
Run Code Online (Sandbox Code Playgroud)

  • 反转任何数字都很巧妙,谢谢! (6认同)

Com*_*ine 5

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

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

在此处输入图片说明

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

  • 我们中的一些人忘记了基础数学在这种情况下有多么有用。谢谢你提醒我如此简单。 (2认同)