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。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 算法或定點運算。