我发现 tan(float)
库中的 cmath
函数返回负值。
运行时的以下代码:
#include <cmath>
....
// some calculation here gives me a value between 0.0 to 1.0.
float tempSpeed = 0.5;
float tanValue = tan(tempSpeed * 60);
__android_log_print(ANDROID_LOG_INFO, "Log Me", "speed: %f", tanValue);
在我的日志文件中给我这个结果:
Log Me: speed `-6.4053311966`
据我记得
tan(0.5*60) = tan(30) = 1/squareroot(3);
有人可以帮助我,因为我看到了负值吗?它与某些浮点大小错误有关吗?或者我在做一些非常愚蠢的事情?
答案 0 :(得分:42)
在 C 中,tan
和其他三角函数需要弧度作为参数,而不是度。您可以将度转换为弧度:
tan( 30. * M_PI / 180. ) == 0.57735026918962576450914878050196
答案 1 :(得分:6)
这是你的角度的切线(30弧度。)如果你正在寻找30度的切线,你必须先将你的角度转换为弧度。
答案 2 :(得分:1)
我猜在C中,tan函数要求你输入Radians作为参数而不是实际的度数值。
因此对于Tan 30,您必须将30度转换为弧度。请记住,360度是2 * Pi弧度,所以30度是弧度的(1 \ 6 * Pi)。
所以tan(1 \ 6 * Pi)会给你正确答案。其中Pi是3.142