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

JavaScript+HTML实现海伦公式计算三角形面积结果错误排查

问题描述

使用海伦公式编写JavaScript+HTML代码实现三角形面积计算功能时,计算结果不符合预期:测试输入三边长为5、4、3时,正确面积应为6,代码实际返回结果为72088。
原有实现代码如下:

原有JavaScript代码

function Triangle(sideA, sideB, sideC) {
  this.sideA = sideA;
  this.sideB = sideB;
  this.sideC = sideC;
  this.semiP = ((this.sideA + this.sideB + this.sideC) / 2);

  this.area = function() {
    return (Math.sqrt(this.semiP * ((this.semiP - this.sideA) * (this.semiP - this.sideB) * (this.semiP - this.sideC))));
  }

}

function calculate() {
  var sideA = document.getElementById('sideA').value;
  var sideB = document.getElementById('sideB').value;
  var sideC = document.getElementById('sideC').value;
  var myTriangle = new Triangle(sideA, sideB, sideC);
  document.getElementById('results').innerHTML = "Area: " + myTriangle.area();
}

原有HTML代码

<p>
  Enter length of side a <input type='text' id="sideA" />
  <br>
  <br> Enter length of side b <input type='text' id="sideB" />
  <br>
  <br> Enter length of side c <input type='text' id="sideC" />

  <div id="results"></div>

  <button type="button" onclick="calculate()">Calculate</button>
</p>
错误原因
  • 输入框的.value属性默认返回字符串类型值,代码获取边长后没有做类型转换,直接传入了Triangle构造函数
  • 计算半周长semiP时,+运算符遇到字符串类型会执行拼接操作而非数值求和:输入5、4、3时,"5" + "4" + "3"的结果是字符串"543",后续除以2时JS隐式将字符串转为数值,得到错误的半周长271.5
  • 后续减法、乘法运算中JS会自动将字符串转为数值计算,基于错误的半周长代入海伦公式计算后,开平方得到的结果就是72088,和正确值偏差极大。
修复方案

只需要在获取输入框值时,显式将字符串转为数值类型即可,推荐使用parseFloat()支持小数边长输入,修复后的calculate函数如下,其余代码无需改动:

function calculate() {
  // 显式将输入值转为浮点数,避免字符串拼接错误
  var sideA = parseFloat(document.getElementById('sideA').value);
  var sideB = parseFloat(document.getElementById('sideB').value);
  var sideC = parseFloat(document.getElementById('sideC').value);
  var myTriangle = new Triangle(sideA, sideB, sideC);
  document.getElementById('results').innerHTML = "Area: " + myTriangle.area();
}

修复后再次输入边长5、4、3,将正确返回面积计算结果6。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:51:21