Reverse a number without making it a string in Javascript [duplicate]

会有一股神秘感。 提交于 2019-12-02 00:20:40

number = number / 10; inside a while loop whose condition is number > 0 means that number will only reach 0 after a very large number of iterations, once number precision fails. (eg. 876 => 87.6 => 8.76 => .876 => .0876...) That's not what you want. You might divide by 10 and drop the decimal part:

function reverseNumber(number) {
  var revNumber = 0;
  while (number > 0) {
    revNumber = (revNumber * 10) + (number % 10);
    number = Math.floor(number / 10);
  }
  return revNumber;
}
console.log(reverseNumber(876));
function reverseInt(int) {
  return  parseInt(int.toString().split('').reverse().join(''))
}
console.log(reverseInt(510));
number = Math.floor(number / 10);

You need to Math.floor as number = number / 10; will give in floating points value which will always be greater than 0

   function reverseNumber(number) {

          var revNumber = 0;

          console.log("######### steps ###########");

          while (number > 0) {
            console.log("Step " , number);
            revNumber = (revNumber * 10) + (number % 10);
            number = Math.floor(number / 10);
          }
            console.log("######### steps End ###########");

          return revNumber;
        }

        console.log(reverseNumber(876));

function reverseNumber(number) {

  var revNumber = 0;

  while (number > 0) {
    revNumber = (revNumber * 10) + (number % 10);
    number = Math.floor(number / 10);
  }

  return revNumber;
}

console.log(reverseNumber(876));

El problema estaba en la reeasignación del valor del number, con el Math.floor sacamos la parte entera y solo esta, asi evitamos los decimales.

These works.

Basic Implementation:

function reverse(n)
{
    var temp=0;
    while(n)
    {
        temp *= 10;
        temp += n%10;
        n = Math.floor(n/10);
    }
    return temp;
}

console.log(reverse(123))
console.log(reverse(456))
console.log(reverse(789))
console.log(reverse(7890))

Inline Basic implementation:

function reverse(n)
{
    var reverse=0;
    while(n>0) (reverse=reverse*10+n%10, n=Math.floor(n/10));
    return reverse;
}

console.log(reverse(123))
console.log(reverse(456))
console.log(reverse(789))
console.log(reverse(7890))

Implementation using arrays.

function reverse(n)
{
    var arr=[], reverse=0;
    while(n>0) (arr.push(n%10), n=Math.floor(n/10));
    while(arr.length) reverse=reverse*10+arr.shift();
    return reverse;
}

console.log(reverse(123))
console.log(reverse(456))
console.log(reverse(789))
console.log(reverse(7890))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!