Обратный номер со знаком - PullRequest
       8

Обратный номер со знаком

0 голосов
/ 26 августа 2018

Как я могу поменять числа, включая знак?(Например: -659 => -956)

Кроме того, числа с нулями в конце должны быть обращены следующим образом:

1000 => 1

50000 => 5

Мой текущий результат:

-784 => 487-

1000 => 0001

Вот моя функция:

function reverseNumber(num)
{
    num = num.toString();
    return num.split("").reverse().join("");
}
console.log(reverseNumber(-5698));

Ответы [ 7 ]

0 голосов
/ 26 августа 2018

Сначала преобразуйте число в его абсолютное значение, а затем измените его на обратное. Если число было отрицательным, добавьте знак «-» в конце. Также, если обратное число имеет начальные нули, то устранение его с помощью выражения reg.

function reverseNumber(num)
{
   var reversed = Math.abs(num).toString().split("").reverse().join("");
   reversed = (num < 0) ? reversed + "-": reversed;
   return reversed.replace(/^0+/, '');
}
console.log(reverseNumber(10000));
console.log(reverseNumber(-987));
console.log(reverseNumber(-10000));
0 голосов
/ 26 августа 2018
function reverseNumber(num)
{
    var sign = Math.sign(num);
    return parseInt(num.toString().replace("-","").split("").reverse().join(""),10) * sign;
}

Более корректно для работы с плавающей точкой:

function reverseNumber(num)
{
    var sign = Math.sign(num);
    return Number(Math.Abs(num).toString().split("").reverse().join("")) * sign;
}
0 голосов
/ 26 августа 2018

Установите флаг negative номер f отрицательным, работайте с абсолютным значением числа и преобразуйте его обратно в отрицательный перед возвратом, если флаг negative был установлен в значение true

function reverseNumber(num){
    let negative = (num<0) ? true : false;
    num = Math.abs(num).toString();
    num = Number(num.split("").reverse().join("") )
    return negative ? (num*-1) : num 
}
console.log(reverseNumber(-5698));
console.log(reverseNumber(1000));
0 голосов
/ 26 августа 2018

Вы можете попробовать этот способ также с помощью Math.sign () , чтобы проверить, является ли число положительным, отрицательным или нулевым.Затем используйте флаг, например, от negative до false, если Math.sign(num) возвращает отрицательное значение, т.е. <1, затем установите его на true.Также используйте Math.abs () , чтобы сделать его положительным всегда, прежде чем изменить его на reverse().Наконец, поставьте знак перед числом на основе флага negative.

function reverseNumber(num) {
  pos_neg = Math.sign(num);
  negative = false;
  if (pos_neg < 1) {
    // treat as negative value
    negative = true;
    num = Math.abs(num);
  }

  num = num + "";
  expression = Number(num.split("").reverse().join(""));
  return negative ? - expression : expression ;
}
console.log(reverseNumber(1000));
console.log(reverseNumber(50000));
console.log(reverseNumber(-784))
0 голосов
/ 26 августа 2018

Вот подход, использующий вспомогательную функцию для обработки обращения, затем вызывая ее условно в функции reverseNumber в зависимости от знака n:

const reverse = s => ("" + s).split("").reverse().join("");

const reverseNumber = n => +(n < 0 ? `-${reverse(-n)}` : reverse(n));

console.log(reverseNumber(-5698));
console.log(reverseNumber(-1));
console.log(reverseNumber(-1.3));
console.log(reverseNumber(1000));
0 голосов
/ 26 августа 2018

Вы можете проверить знак числа перед обработкой.Вот рабочий пример

function reverseNumber(num)
{
  sign = num < 0 ? '-' : '';
  num = Math.abs(num) + "";
  return Number(sign + num.split("").reverse().join(""));
}
console.log(reverseNumber(-1000));
0 голосов
/ 26 августа 2018

Вы можете сохранить знак и применить позже, используя абсолютное значение.

function reverse(n) {
    return (n > 0 || -1) * Math.abs(n).toString().split('').reverse().join('');
}

console.log(reverse(-1000));
console.log(reverse(1000));
...