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

三角形角度计算代码仅对边长5有效,其余输入返回NaN问题排查

问题分析与修复

你遇到的NaN问题核心是运算顺序错误,完全违背了余弦定理的公式逻辑。

错误根源

余弦定理的正确公式为:

cos(a) = (b² + c² - a²) / (2bc)

但你的代码里,分母部分写成了/2 * length2 * length3——由于乘法和除法是同级运算,会从左到右执行,实际计算变成了:
(分子 / 2) * length2 * length3
这会导致结果远远超出acosf()函数的定义域[-1, 1],函数直接返回NaN(非数值)。

以输入边长5、4、3计算angle2为例:
分子 = 5² + 3² - 4² = 25+9-16=18
错误计算逻辑:18/2 53 =9*15=135,显然135不在[-1,1]范围内,acosf(135)自然返回NaN。

修复后的代码

给分母的2*b*c加上括号,确保先计算乘积再做除法:

angle1 = acosf((powf(length2,2) + powf(length3,2) - powf(length1,2)) / (2 * length2 * length3)) * 180 / 3.14153f;
angle2 = acosf((powf(length1,2) + powf(length3,2) - powf(length2,2)) / (2 * length1 * length3)) * 180 / 3.14153f;
angle3 = 180.0f - (angle2 + angle1);

验证结果

输入边长5、4、3时,修复后的代码会输出符合直角三角形规律的结果:

angle one is 90.0018
angle two is 53.1301
angle three is 36.8681

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:57:21