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

React二次方程求解应用返回NaN问题求助(附代码)

修复你的二次方程求解函数问题

嘿,我帮你找出了几个导致返回NaN[Object]NaN的关键问题,咱们一步步来解决:

主要错误点分析

  • 判别式计算完全错误:
    二次方程的判别式公式是b² - 4ac,但你写的var root = -b + Math.sqrt(b, 2) - (4 * a * c);完全偏离了这个公式。而且Math.sqrt(b, 2)是错误用法——Math.sqrt()只接受一个参数(要开根号的数),求b的平方应该用b * b或者Math.pow(b, 2)。

  • 根的计算逻辑错误:
    二次方程的两个根应该是(-b + √判别式)/(2a)和(-b - √判别式)/(2a),但你两个根都写了+ Math.sqrt(root),不仅结果不对,还会导致逻辑错误。

  • DOM拼接语法错误:
    你直接用plusAnswer + <br/> + minusAnswer拼接内容,这里的<br/>会被当成JSX对象,而非字符串,所以拼接后会出现[Object]这个奇怪的内容。需要把它改成字符串形式的'<br/>',或者用模板字符串更简洁。

  • 潜在的类型转换问题:
    如果你的a、b、c是从输入框获取的字符串值,直接进行数学运算会导致NaN,所以需要先把它们转换成数字类型。

修正后的完整代码

quadraticFormula(a, b, c) {
  // 先将输入转换为数字,避免字符串运算导致的NaN
  const numA = Number(a);
  const numB = Number(b);
  const numC = Number(c);

  // 正确计算判别式:b² - 4ac
  const discriminant = Math.pow(numB, 2) - 4 * numA * numC;

  // 处理无实数根的情况(判别式为负)
  if (discriminant < 0) {
    document.getElementById('answers').innerHTML = '该方程无实数根';
    return;
  }

  const sqrtDiscriminant = Math.sqrt(discriminant);
  // 正确计算两个实数根
  const plusAnswer = (-numB + sqrtDiscriminant) / (2 * numA);
  const minusAnswer = (-numB - sqrtDiscriminant) / (2 * numA);

  // 用模板字符串正确拼接结果和换行符,保留两位小数让结果更美观
  document.getElementById('answers').innerHTML = `${plusAnswer.toFixed(2)}<br/>${minusAnswer.toFixed(2)}`;
}

现在你输入a=1、b=7、c=10的话,应该会得到正确的结果-2.00和-5.00啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:30:20