Как получить знак числа в ActionScript 3.0? - PullRequest
4 голосов
/ 03 октября 2008

У меня есть переменная типа Number, и я хотел бы получить знак (если это '-', я хотел бы иметь -1, а если '+', я хотел бы иметь 1). Итак, я сделал это:

var sign = Math.abs(n) / n;

Но есть другой способ? Лучше чем это?

Ответы [ 7 ]

13 голосов
/ 03 октября 2008

У вас будут проблемы, если n == 0 ... как насчет этого:

var sign = n < 0 ? -1 : 1;
8 голосов
/ 03 октября 2008

Это даст вам ошибку, если n равно нулю.

Метод грубой силы:

function sign(num) {
  if(num > 0) {
    return 1;
  } else if(num < 0) {
    return -1;
  } else {
    return 0;
  }
}

Или, для тех, кто любит условного оператора:

function sign(num) {
  return (num > 0) ? 1 : ((num < 0) ? -1 : 0);
}
2 голосов
/ 03 октября 2008

Вы также можете сделать это:

var sign = (n>=0)?1:-1;

Использование так называемого троичного оператора .

1 голос
/ 02 сентября 2012

Я использую это:

return (number < 0 && -1) || 1;
0 голосов
/ 06 ноября 2014

// n = ваш номер // nSign = знак вашего номера

nSign = Math.round (Math.sin (n) * - 1);

/ * Math.sin возвращает число от -1 до 1. Вы должны округлить его, чтобы получить номер не-DEC. Этот номер будет противоположен вашему номеру. Умножьте это на -1 * /

// или вы можете просто сделать это

Math.round (Math.sin (/ N /) * - 1)

0 голосов
/ 26 февраля 2009

Фрагмент кода, который я унаследовал:

function getSign(number:int):int {
    var tmp:String = new String(number);
    if (tmp.indexOf(0) == '-') {
        return -1;
    }
    return 1;
}

PS: Пожалуйста, не используйте этот код. Это шутка

0 голосов
/ 26 февраля 2009

Если ваш номер умещается в 31 бит, вы можете использовать:

var sign = 1 + 2*(n >> 31);

Было бы интересно узнать, быстрее ли это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...