VBA中Atan2函数返回结果异常问题排查
VBA与Python中Atan2函数结果不一致的原因
在处理3D变换矩阵转欧拉角的问题时,发现VBA的Application.Atan2函数与Python的math.atan2函数输出结果差异极大,排除角度转换环节的影响后,问题依然存在。以下是最简复现示例:
Python代码与结果
import math print(math.atan2(-0.384, 0.617) * 180 / math.pi)
运行结果:-31.896741982732813
VBA代码与结果
Debug.Print Application.Atan2(-0.384, 0.617) * 180 / Pi
运行结果:121.896741982725
问题根源
核心原因是两个函数的参数顺序完全相反:
- Python的
math.atan2(y, x)参数顺序为「y值在前,x值在后」 - VBA中
Application.Atan2(x, y)参数顺序为「x值在前,y值在后」
将VBA代码的参数调换顺序后,结果即可与Python一致:
Debug.Print Application.Atan2(0.617, -0.384) * 180 / Pi
运行结果会接近-31.896741982732813。
内容的提问来源于stack exchange,提问作者G.H.
相关产品推荐
相关产品推荐

