在Javascript中获取数字符号的最简单方法是什么?

时间:2012-11-19 22:11:21

标签: javascript

  

可能重复:
  Number.sign() in javascript

给定一些数字变量,确定它的最简单方法是什么?

我一直以这样的代码结束:

var direction = (vector[0] > 0) ? 1: (vector[0] < 0) ? -1: 0;

如果数字为负数,那么我想要的只是-1,如果是正数,则为1,如果为0,则为0。

最简单的&#34;我的意思是优雅或不那么打字。

或者,也许有一种绝对增加价值的方法。就像数字是负数一样,然后从中减去1,如果是正数则加1。 Math.abs()提供绝对值,但是一旦运行Math.abs(),就无法将其转换回有符号数。

4 个答案:

答案 0 :(得分:14)

你可以这样做:

var sign = number && number / Math.abs(number);

答案 1 :(得分:4)

如何定义一个函数来完成它?

sign = function(n) { return n == 0 ? 0 : n/Math.abs(n); }

答案 2 :(得分:2)

您可以将数字除以其绝对值,然后您将获得符号:

var sign = number && number / Math.abs(number);

答案 3 :(得分:1)

如果您想要更短的方式,并且您知道它是一个数字,并且您不介意仅限于有符号的32位范围,您可以这样做:

n ? -(n >>> 31) || 1 : 0;

  • 如果n0,则为0
  • 如果n >>> 311,那么它已经签名,那么否定,将被否定为-1
  • 如果n >>> 310,则表示未签名,因此为正,默认为1