You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不转换为字符串反转整数的函数返回0,原因是什么?

问题原因及解决方法
  • 问题根源:循环结束后,变量n的值已经被修改为0(比如输入5时,Math.floor(5/10)=0),而Math.sign(0)的返回值是0,所以rev_num * 0的结果必然是0,这就是返回值不符合预期的核心原因。

  • 修正方案:要在循环开始前先保存原始输入n的符号,避免使用循环后已被修改的n来计算符号。修改后的代码如下:

function reverseInt(n) {
  const ten = 10;
  const zero = 0;
  // 提前保存原始输入的符号
  const sign = Math.sign(n);
  // 用绝对值处理循环,避免负数干扰循环条件
  let absN = Math.abs(n);
  let rev_num = zero;
  while (absN > zero) {
    rev_num = rev_num * ten + (absN % ten);
    absN = Math.floor(absN / ten);
  }

  return rev_num * sign;
}

修改后输入5时,sign为1,rev_num为5,返回5*1=5,符合预期;同时也能正确处理负数输入(比如输入-123会返回-321)。

内容的提问来源于stack exchange,提问作者Passerby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:20:43