gpt4 book ai didi

c - atan(x) 给我错误的值?

转载 作者:太空狗 更新时间:2023-10-29 15:49:18 26 4
gpt4 key购买 nike

我在我的代码中得到了这个函数:

-(void)printAngle
{
int width = p2_t.x-cp1_t.x;
int height = p2_t.y-cp1_t.y;
if (width != 0) {
CCLOG(@"%i * %i", width, height);
CCLOG(@"%f", (float)atan(height/width)*(180/M_PI));
}
}

这是输出的一个片段:

2011-12-06 20:46:52.074 x[12392:c503] 24 * 13
2011-12-06 20:46:52.074 x[12392:c503] 0.000000
2011-12-06 20:46:52.108 x[12392:c503] 25 * 15
2011-12-06 20:46:52.108 x[12392:c503] 0.000000

这意味着 arctan(13/24) 的度数为 0。这是不正确的。那么为什么我得到0?我做错了类型吗?

它得到了一些正确的角度:

2011-12-06 20:51:11.956 x[12436:c503] 12 * 129
2011-12-06 20:51:11.957 x[12436:c503] 84.289404
2011-12-06 20:51:11.989 x[12436:c503] 10 * 132
2011-12-06 20:51:11.990 x[12436:c503] 85.601292

最佳答案

您正在使用整数数学运算并期望得到 float 结果。这行不通。将 widthheight 更改为 float,您应该会得到预期的结果。

如果您不知道,在 C 语言中,用整数除法会产生整数结果。因此,评估 13/24 会生成 0 而不是 0.541666667。通过在执行除法之前将其中一个变量转换为 (float),或者仅使用 float 开始,您将获得您期望的 float 。

关于c - atan(x) 给我错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com