-(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 * 132011-12-06 20:46:52.074 x[12392:c503] 0.0000002011-12-06 20:46:52.108 x[12392:c503] 25 * 152011-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 * 1292011-12-06 20:51:11.957 x[12436:c503] 84.2894042011-12-06 20:51:11.989 x[12436:c503] 10 * 1322011-12-06 20:51:11.990 x[12436:c503] 85.601292解决方法 您正在使用整数数学并期望浮点结果.这不行.将宽度和高度更改为浮动,您应该获得预期的结果.
如果您不知道,在C中,使用整数进行除法会产生整数结果.所以评估13/24正在产生0而不是0.541666667.通过在执行除法之前将其中一个变量转换为(float),或者只使用float开始,您将得到您期望的浮点数.
总结以上是内存溢出为你收集整理的c – atan(x)给了我错误的价值观?全部内容,希望文章能够帮你解决c – atan(x)给了我错误的价值观?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)