在不使用反向功能的情况下反转数字

时间:2019-10-02 04:21:28

标签: javascript reverse

我需要用JavaScript反转一个数字,但是我不知道为什么下面的代码进入无限循环。

var num=1234;
var reverse=0;
while(num!=0) {
  reverse=reverse*10;            
  reverse=reverse+(num%10);
  num=num/10;
}
console.log(reverse);

我希望输出4321,但是实际输出是无限循环

4 个答案:

答案 0 :(得分:2)

操作num = num / 10必须是整数除法(否则num将花费很长时间才能变为0)。使用Math.trunc去除任何小数部分:

num=Math.trunc(num/10);

相反:

var num = 1234;
var reverse = 0;
while(num !== 0){
  reverse = reverse*10;            
  reverse = reverse+(num%10);
  num = Math.trunc(num/10);
}
console.log(reverse);

答案 1 :(得分:1)

更改

num=num/10;

收件人

num = num/10|0;

有很多方法可以实现这一点,请检查here

答案 2 :(得分:1)

其他方法:

var num = 1234
  , rev = 0
do {
  rev = (rev*10) + (num%10)
} while (num = Math.trunc(num/10))

console.log(rev)

答案 3 :(得分:0)

您可以简单地使用Math.trunc(x)从除法结果中提取整数。否则您也可以使用以下方法。

另一种方法

var num = 1234;
var reverse = 0;
var final = 0;
while(num !== 0){
    reverse = num%10;
    num = parseInt(num/10);
    console.log(reverse);
    if(final! = '0'){
        final = final.toString().concat(reverse);
    }else {
        final = reverse;
    }
}
console.log(final);

否则,您甚至可以做类似的事情;

var num = 1234;
var reverse = num.toString().length;
var res = num.toString().charAt(1);
var final = "";

for(var i = reverse; i >= 0; i--){
    console.log(num.toString().charAt(i));
    final = final.concat(num.toString().charAt(i))
}
console.log(final);