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

Python中计算毕达哥拉斯三角恒等式出现非预期结果的原因

问题原因

这是IEEE 754标准双精度浮点数运算的固有精度误差导致的,是所有遵循该标准的编程语言都会出现的共性现象,和Python语言本身的实现无关。

具体原因可以拆解为三点:

  • 数学层面的π是无限不循环无理数,但Python math库提供的pi是仅保留了约16位十进制有效数字的近似值,pi/i的计算结果从源头就和理论精确值存在微小偏差。
  • sin、cos三角函数的底层实现采用的是数值近似计算方法,输出结果是和理论值误差极小的近似值,并非完全精确的数学结果。
  • 后续的平方、加法运算会进一步累积上述微小误差,最终就可能出现1.0000000000000002、0.9999999999999999这类和1偏差不到1e-15的结果,偏差量级已经达到双精度浮点数的最小精度边界,属于完全正常的运算结果。

通用处理方案

如果需要在代码中校验计算结果是否符合三角恒等式预期,不要直接用r == 1做精确相等判断,改用带容错阈值的近似判断即可:

# 阈值可以根据业务精度需求调整,1e-12对于绝大多数场景都足够
assert abs(r - 1) < 1e-12

内容的提问来源于stack exchange,提问作者Kai Ruben Enerhaugen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:09:00