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

计算3个整数的十进制平均值得到错误结果的原因排查

代码错误说明

你的代码存在两处会导致计算结果错误的问题:

  • 运算符优先级不符合预期:C类语法中,除法运算符/的优先级高于加法运算符+,你写的number1+number2+number3 / 3实际执行逻辑是先计算number3 / 3,再将结果与number1、number2相加,完全不是「三个数求和后除以3」的计算逻辑。
  • 整数除法截断误差:即便你修正了运算顺序给求和部分加上括号,如果直接用三个int类型的和除以整数常量3,整数运算规则会直接舍弃小数部分、仅保留整数商,最后赋值给float类型时也无法找回丢失的小数位,得不到精确的十进制小数结果。
正确写法

需要先通过括号明确运算优先级,再将除法的任意一侧操作数转为浮点类型,触发浮点除法运算保留小数位:

float average = (number1 + number2 + number3) / 3.0f;

举个测试用例对照:如果三个变量值分别为1、2、2,原代码的计算结果为1 + 2 + (2/3) = 3.0,而正确的平均值应为约1.6667,偏差非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:24:31