Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在C中,tan(30)给了我一个负值!为什么?_Android_C_Math_Android Ndk_Cmath - Fatal编程技术网

Android 在C中,tan(30)给了我一个负值!为什么?

Android 在C中,tan(30)给了我一个负值!为什么?,android,c,math,android-ndk,cmath,Android,C,Math,Android Ndk,Cmath,我观察到来自cmath库的tan(float)函数返回负值 运行时,将显示以下代码: #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_

我观察到来自
cmath
库的
tan(float)
函数返回负值

运行时,将显示以下代码:

    #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);
据我记忆所及

    tan(0.5*60) = tan(30) = 1/squareroot(3);

有人能帮我解释一下为什么我看到负值吗?是否与某些浮点大小错误有关?还是我真的在做什么蠢事?

C中,
tan
和其他三角函数的参数是弧度,而不是度。可以将度转换为弧度:


这是角度的正切值(30弧度)。如果要寻找30度的正切值,必须先将角度转换为弧度。

我猜在C中,tan函数需要输入弧度作为参数,而不是实际的度值

所以对于棕褐色30,你必须将你的30度转换成弧度。请记住,360度是2*Pi弧度,因此30度将是弧度的(1\6*Pi)分之一


所以tan(1\6*Pi)会给你正确的答案。其中Pi为3.142

将参数乘以
Pi/180
以将角度转换为弧度。正如你所知,
M_Pi
不是标准的一部分:太棒了,反应如此迅速。现在我可以回家睡觉了。:-)谢谢大家!!为什么不查找并阅读
tan()
文档?是的,我应该。。我同意这是愚蠢的。但是,有时候当你深陷迷茫的时候。。[就像找出正确的方法将击球长度和速度映射到球的轨迹],最简单的事情不会发生在你的头上。:-)@高性能标记。。是的。。你说得对,我好像漏掉了那2个。。我现在已经改正了。。。谢谢
    tan(0.5*60) = tan(30) = 1/squareroot(3);
tan( 30. * M_PI / 180. ) == 0.57735026918962576450914878050196