我发现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);

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

最佳答案

在c中,tan和其他三角函数期望弧度作为参数,而不是度数。可以将度转换为弧度:

tan( 30. * M_PI / 180. ) == 0.57735026918962576450914878050196

关于android - 在C中,tan(30)给出了负值!为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11195039/

10-12 17:06