反转数字而不在Javascript中将其设为字符串

时间:2018-07-03 03:31:58

标签: javascript reverse

有人可以告诉我代码中我要去哪里哪里吗?我正在尝试反转数字而不将其更改为字符串。我一直在搜索google,并浏览了以前有关该主题的所有问题,从中我可以看到我的代码反映了其他答案。

我只能用Java,C或C ++查找不使用to字符串方法的代码。

尝试在浏览器控制台中运行代码时,它给出的答案是“ Infinity”,或者使浏览器崩溃。

这是我的代码...

function reverseNumber(number) {

  var revNumber = 0;

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

  return revNumber;
}

console.log(reverseNumber(876));

我知道它一定是一些小的语法错误,但我只是没有看到它。任何见识将不胜感激。谢谢!

5 个答案:

答案 0 :(得分:8)

在条件为number = number / 10;的{​​{1}}循环内的

while表示number > 0仅在数字精度失败后经过大量迭代后才达到0。 (例如876 => 87.6 => 8.76 => .876 => .0876 ...)那不是您想要的。您可以除以10 除去小数部分:

number

答案 1 :(得分:2)

function reverseInt(int) {
  return  parseInt(int.toString().split('').reverse().join(''))
}
console.log(reverseInt(510));

答案 2 :(得分:0)

number = Math.floor(number / 10);

您需要将Math.floor设置为number = number / 10;将给出的浮点值始终大于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));

答案 3 :(得分:0)

这些有效。

基本实施

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))

内联基本实现

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))

使用数组的实现。

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))

答案 4 :(得分:0)

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));

数字表示您的问题,请自行计算数学上的单位,而小数部分也要输入数字。