You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在C++中计算角度制的sin、cos、tan值?开发科学计算器遇问题

问题分析与解决办法

嘿,这问题其实挺常见的,我刚学C++写计算器的时候也踩过一模一样的坑!

核心问题:搞反了正三角函数的转换方向

math.h里的sin()cos()tan这几个正三角函数,要求传入的参数必须是弧度值,但你应该是给程序输入了角度值对吧?你现在的代码是把函数返回的结果(本来就是三角函数的比值,根本不是弧度!)乘以180.0/PI,这完全搞错了逻辑顺序。

而反三角函数asin()acos()atan()的逻辑是对的:它们输入的是三角函数比值,输出的是弧度制的角度,所以你把输出值转成角度制的操作*180.0/PI完全正确,这就是为什么反三角部分能正常工作。

修正后的代码示例

首先要确保你正确定义了PI,比如在代码开头加上:

#define PI 3.14159265358979323846
// 或者有些编译器支持直接用M_PI,不过需要先定义#define _USE_MATH_DEFINES再包含math.h

然后把正三角函数的代码改成这样:

case 7: 
    cout<<"Enter the number : "; 
    cin>>a; 
    cout<<endl; 
    cout<<"Sin = "<<sin(a * PI / 180.0) <<endl; 
    break;
case 8: 
    cout<<"Enter the number : "; 
    cin>>a; 
    cout<<endl; 
    cout<<"Cos = "<<cos(a * PI / 180.0) <<endl; 
    break;
case 9: 
    cout<<"Enter the number : "; 
    cin>>a; 
    cout<<endl; 
    cout<<"Tan = "<<tan(a * PI / 180.0) <<endl; 
    break;

总结一下转换逻辑

  • 正三角函数(sin/cos/tan):用户输入角度 → 先转成弧度传给函数:角度值 * PI / 180,函数返回的就是该角度对应的三角函数比值(无需再转角度)
  • 反三角函数(asin/acos/atan):用户输入比值 → 函数返回弧度制角度 → 转成角度制输出:返回值 * 180 / PI

内容的提问来源于stack exchange,提问作者Zain Abedin

火山引擎 最新活动