math.h的问题

Aus*_*ore 3 c++ math

我正在写一个使用功能的程序sin(),并cos()math.h图书馆.但是,我注意到我得到了时髦的结果.在搜索并多次检查我的数学后,我决定用这个做一个简单的检查:

int main()
{
    cout << "sin(45.0) = " << sin(45) << endl;
    cout << "cos(45.0) = " << cos(45) << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

 sin(45) = 0.850904
 cos(45) = 0.525322
Run Code Online (Sandbox Code Playgroud)

这些应该是平等的吗?math.h图书馆有什么特别之处吗?难道我做错了什么?

以下是WolframAlpha中的公式:

罪(45)

COS(45)

Joh*_*web 9

您应该cmath在C++中使用,而不是旧的C头.

std::sin()并且std::cos()两者都采用浮点值表示以弧度表示的角度.

此文件的GCC版本包含一个方便的π常量(在C++标准中不存在但是),这将使您更容易将度数转换为弧度:

#include <cmath>
#include <iostream>

double degrees_to_radian(double deg)
{
    return deg * M_PI / 180.0;
}

int main()
{
    std::cout << "sin(45.0) = " << std::sin(degrees_to_radian(45)) << std::endl;
    std::cout << "cos(45.0) = " << std::cos(degrees_to_radian(45)) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

看它运行!


ato*_*erz 8

sincos期望以弧度输入而不是度数.
试试这个:
sin(degrees * pi / 180)


Ign*_*ams 5

三角函数使用弧度,而不是度.