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

如何将数字转为相反数?我的JavaScript代码为何未达预期?

为啥Math.abs()没法得到相反数?

嘿,这个小坑很多刚接触JS的同学都踩过,咱们来捋清楚~

你最开始写的箭头函数const opposite = number => -number完全正确,因为相反数的本质就是给原数乘以-1:正数变负,负数变正,0还是0。

但你后来写的Math.abs(number),它的功能是返回数字的绝对值——简单说就是把负数转正数,正数保持不变,0还是0。比如:

  • Math.abs(1) → 1(和原数一样,不是相反数)
  • Math.abs(-3) → 3(是原数的绝对值,不是相反数)

所以你忽略的核心点就是:Math.abs()的作用是“去掉负号”,而不是“反转符号”。这俩功能完全不一样!

如果非要用Math.abs()来实现相反数(虽然没必要,直接-number更简洁),得结合原数的符号来调整:

function opposite(number) {
  // 如果原数是正数,返回负的绝对值;如果是负数/0,返回绝对值
  return number > 0 ? -Math.abs(number) : Math.abs(number);
}

但显然,直接用return -number是最直接高效的写法,没必要绕这个弯~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:07:37