反转一个数字,而不是在Javascript中使它成为一个字符串

sma*_*Dog 2 javascript reverse

有人能告诉我我的代码出错了吗?我试图反转一个数字而不将其改为字符串.我一直在搜索谷歌,并查看以前有关此主题的问题,从我可以看到我的代码镜像其他答案.

我只能在Java,C或C++中找到不使用to string方法的代码.

在我的尝试中,当我在浏览器控制台中运行代码时,它会给我一个"Infinity"的答案或者崩溃我的浏览器.

这是我的代码......

function reverseNumber(number) {

  var revNumber = 0;

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

  return revNumber;
}

console.log(reverseNumber(876));
Run Code Online (Sandbox Code Playgroud)

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

Cer*_*nce 8

number = number / 10;一个内部while循环,其条件是number > 0意味着number只是将一个非常大的数量的迭代后达到0,一次的数字精度失败.(例如,876 => 87.6 => 8.76 => .876 => .0876 ......)这不是你想要的.您可以除以10 删除小数部分:

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));
Run Code Online (Sandbox Code Playgroud)

  • 如果数字以零结尾则不起作用。例如:`10`。 (2认同)
  • 取决于OP,但我认为例如6780-> 0876 === 876-所需的输出是数字,而不是字符串,并且数字不能以前导0表示。(我想不出还有其他选择...?) (2认同)