在三角函數運算、幾何計算或物理模擬中,經常需要在「弧度」與「角度」之間轉換。Python 標準庫 math 模組提供 degrees() 與 radians() 兩個函數,分別處理弧度→角度與角度→弧度。本文詳細說明 degrees() 的用法、參數、回傳值與常見應用場景。
math.degrees(x: float) -> float
x - 弧度值(浮點數)。degrees = x * 180 / π。
import math
print(math.degrees(0)) # 0.0
print(math.degrees(math.pi)) # 180.0
print(math.degrees(math.pi/2)) # 90.0
print(math.degrees(math.pi/4)) # 45.0
print(math.degrees(1)) # 57.29577951308232
print(math.degrees(-math.pi)) # -180.0
# 計算向量夾角
import math
def angle_between(v1, v2):
dot = v1[0]*v2[0] + v1[1]*v2[1]
norm1 = math.hypot(v1[0], v1[1])
norm2 = math.hypot(v2[0], v2[1])
rad = math.acos(dot / (norm1 * norm2))
return math.degrees(rad)
print(angle_between((1, 0), (0, 1))) # 90.0 度
某些繪圖庫(如 SVG、Canvas)旋轉參數以角度為單位,而 math.sin/cos 需弧度:
angle_deg = 45
angle_rad = math.radians(angle_deg) # 反向轉換
x = math.cos(angle_rad)
y = math.sin(angle_rad)
# 方位角通常以度為單位(0°=北,90°=東)
bearing_rad = math.atan2(dx, dy) # 取得弧度
bearing_deg = math.degrees(bearing_rad) % 360
degrees() 內部僅做一次乘法與除法,效能極高,可放心在迴圈中大量呼叫。math.degrees(math.pi) 回傳 180.0,但 math.degrees(math.pi/3) 可能為 59.99999999999999。顯示時建議用 round(val, 10) 或格式化字串 f'{val:.2f}°'。np.degrees(arr),向量化更高效。| 弧度 | 角度 | 備註 |
|---|---|---|
| 0 | 0° | |
| π/6 | 30° | |
| π/4 | 45° | |
| π/3 | 60° | |
| π/2 | 90° | 直角 |
| 2π/3 | 120° | |
| 3π/4 | 135° | |
| 5π/6 | 150° | |
| π | 180° | 平角 |
| 3π/2 | 270° | |
| 2π | 360° | 圓周角 |
import math, sys
def rad2deg(rad):
return math.degrees(rad)
def deg2rad(deg):
return math.radians(deg)
if __name__ == '__main__':
if len(sys.argv) != 3:
print('用法: python angle_conv.py [rad|deg] 數值')
sys.exit(1)
mode, val = sys.argv[1], float(sys.argv[2])
if mode == 'rad':
print(f'{val} rad = {rad2deg(val):.6f}°')
elif mode == 'deg':
print(f'{val}° = {deg2rad(val):.6f} rad')
else:
print('模式錯誤,請用 rad 或 deg')
執行範例:
$ python angle_conv.py rad 1.5708
1.5708 rad = 90.000043°
$ python angle_conv.py deg 45
45.0° = 0.785398 rad
掌握 math.degrees() 與 math.radians(),即可在數學計算與工程應用中自如切換角度單位,避免單位錯誤導致的邏輯 Bug。