首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 計算 0°~180° 正弦餘弦正切值示例

     編輯:程式設計綜合問答

核心公式

C++ <cmath> 三角函數參數為**弧度**。

弧度 = 角度 × π / 180

完整代碼

#include <iostream>
#include <cmath>
#include <iomanip>

int main() {
    constexpr double PI = 3.14159265358979323846; // 或 M_PI (需 #define _USE_MATH_DEFINES)
    
    std::cout << std::fixed << std::setprecision(6);
    std::cout << "度數\tSin\t\tCos\t\tTan\n";
    
    for (int deg = 0; deg <= 180; deg += 10) {
        double rad = deg * PI / 180.0;
        double s = std::sin(rad);
        double c = std::cos(rad);
        double t = std::tan(rad); // 90° 附近極大,輸出會很大
        
        std::cout << deg << "°\t" << s << "\t" << c << "\t" << t << "\n";
    }
    return 0;
}

輸出片段

度數	Sin		Cos		Tan
0°	0.000000	1.000000	0.000000
10°	0.173648	0.984808	0.176327
...
90°	1.000000	0.000000	1.633e+16  // 極大值,非無窮
...
180°	0.000000	-1.000000	-0.000000

注意事項

  • tan(90°) 數學上無定義,浮點運算得極大值而非 inf(因 π/2 不能精確表示)。
  • 精度要求高時用 long double + sinl/cosl/tanl。
  • 嵌入式無 FPU 時查表法(查表+線性插值)更高效。

查表法雛形

constexpr int TABLE_SIZE = 181; // 0~180 度
double sinTable[TABLE_SIZE];
double cosTable[TABLE_SIZE];

void initTables() {
    for (int i = 0; i < TABLE_SIZE; ++i) {
        double rad = i * PI / 180.0;
        sinTable[i] = std::sin(rad);
        cosTable[i] = std::cos(rad);
    }
}
// 運行時直接 sinTable[deg] 訪問,O(1)

教科書題目通常只需「循環 + 弧度轉換 + 調用庫函數」。生產環境高性能場景才考慮查表、CORDIC 算法或定點運算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved