为什么atan没有产生正确的结果?

时间:2015-07-01 01:51:10

标签: c floating-point trigonometry radians

我有以下小程序在我的大项目中重现了一个触发错误:

#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>

#define R2D(trig_fn, val) trig_fn (val * (180.0 / M_PI))

int main()
{
    printf("%f\n", R2D(atan, 2.5));
    return 0;
}

atan(2.5)从弧度转换为度数的预期结果是68.1985 ......,但相反,该程序输出1.563815,这远不及正确的答案。

我将其预处理成文件;问题不在我的第一次猜测的宏观中;宏正确扩展(atan (2.5 * (180.0 / 3.14159265358979323846)))。

1 个答案:

答案 0 :(得分:2)

double atan(double x);
     

返回x的反正切的主值,以弧度表示。

输出是弧度,而不是度。您需要将函数的结果转换为度。输入仍然是一个简单的无单位数。

#define R2D(trig_fn, val) (trig_fn(val) * (180.0 / M_PI))