この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:guest
更新日時:2026-06-11 07:10:02

タイトル: math
SEOタイトル: Python math モジュール完全ガイド(切り上げ・絶対値・三角関数・対数・定数)

この記事の要点
  • math は Python 標準ライブラリの数学関数集。import するだけで使える
  • 切り上げ / 切り捨て: math.ceil() / math.floor() / math.trunc()
  • 絶対値 / 累乗 / 平方根: math.fabs() / math.pow() / math.sqrt()
  • 三角関数: sin / cos / tan + ラジアン⇔度の変換 radians / degrees
  • 対数 / 指数: log / log2 / log10 / exp
  • 定数: math.pi (円周率) / math.e (自然対数の底) / math.inf / math.nan

Python math モジュールとは

math は Python 標準ライブラリに含まれる数学関数集です。C 言語の math.h をベースにしており、切り上げ / 切り捨て / 三角関数 / 対数 / 数学定数などを利用できます。

import math

print(math.pi)         # 3.141592653589793
print(math.sqrt(2))    # 1.4142135623730951
print(math.ceil(3.2))  # 4

主要な関数を分野別に整理

1. 切り上げ・切り捨て・丸め

関数意味
math.ceil(x)x 以上で最小の整数ceil(3.2) → 4 / ceil(-3.2) → -3
math.floor(x)x 以下で最大の整数floor(3.7) → 3 / floor(-3.7) → -4
math.trunc(x)小数部を切り捨てて整数化trunc(3.7) → 3 / trunc(-3.7) → -3
round(x) (組込)四捨五入 (バンカーズ丸め)round(2.5) → 2 / round(3.5) → 4
import math

print(math.ceil(3.2))    # 4
print(math.ceil(-3.2))   # -3 (絶対値ではなく数直線上で上)
print(math.floor(3.7))   # 3
print(math.floor(-3.7))  # -4
print(math.trunc(-3.7))  # -3 (0 方向)

2. 絶対値・累乗・平方根

関数意味
math.fabs(x)絶対値(float)fabs(-3.5) → 3.5
math.pow(x, y)x の y 乗(float)pow(2, 10) → 1024.0
math.sqrt(x)平方根sqrt(16) → 4.0
math.cbrt(x) (3.11+)立方根cbrt(27) → 3.0
math.hypot(*args)ユークリッド距離hypot(3, 4) → 5.0
math.gcd(*ints)最大公約数gcd(12, 18) → 6
math.lcm(*ints) (3.9+)最小公倍数lcm(4, 6) → 12
math.factorial(n)階乗factorial(5) → 120

3. 三角関数

引数はラジアン。度数法と相互変換できます。

import math

# 度 → ラジアン
print(math.radians(180))      # 3.141592653589793

# ラジアン → 度
print(math.degrees(math.pi))  # 180.0

# 三角関数
print(math.sin(math.pi / 2))  # 1.0
print(math.cos(0))            # 1.0
print(math.tan(math.pi / 4))  # 0.999... ≒ 1

# 逆三角
print(math.asin(1))           # 1.5707... (π/2)
print(math.atan2(1, 1))       # 0.7853... (π/4)
関数意味
sin / cos / tan三角関数(引数: ラジアン)
asin / acos / atan逆三角関数(戻り値: ラジアン)
atan2(y, x)4 象限の逆正接(直交→極座標で頻出)
sinh / cosh / tanh双曲線関数
radians(x)度 → ラジアン変換
degrees(x)ラジアン → 度変換

4. 対数・指数

import math

print(math.log(math.e))      # 1.0  (自然対数 ln)
print(math.log(100, 10))     # 2.0  (底指定)
print(math.log2(8))          # 3.0
print(math.log10(1000))      # 3.0
print(math.exp(1))           # 2.718... (e^1)
print(math.exp(2))           # 7.389... (e^2)

5. 数学定数

定数意味
math.pi3.141592653589793円周率 π
math.e2.718281828459045自然対数の底 e
math.tau6.2831853071795862π(円一周)
math.inf無限大float のオーバーフロー判定用
math.nanNaN (Not a Number)無効な数値表現

6. 特殊な判定関数

import math

math.isnan(float("nan"))   # True
math.isinf(float("inf"))   # True
math.isfinite(1.0)         # True

# 浮動小数点の近似比較(誤差を許容)
math.isclose(0.1 + 0.2, 0.3)              # True
math.isclose(1.0, 1.0001, rel_tol=1e-3)   # True

使い分け Tips

場面選ぶもの
整数のべき乗 (整数結果が欲しい)** 演算子 (2 ** 10)
float のべき乗math.pow()
絶対値(型を維持)組込 abs()
絶対値(float が欲しい)math.fabs()
四捨五入組込 round()
切り上げ / 切り捨てmath.ceil() / math.floor()
NumPy で配列演算したいnumpy.sin() など(math はスカラ専用)

関連モジュール

モジュール用途
cmath複素数版 math(複素対数 / 複素三角関数)
statistics平均 / 分散 / 標準偏差
random乱数生成
fractions有理数
decimal10 進数の正確な演算(金融用)
numpy (外部)配列ベクトル化された数値計算

FAQ

Q: math.sqrt(-1) はエラーになる
A: 負数の平方根は math では ValueError。複素数で計算したいなら cmath.sqrt(-1)1j が返る。

Q: 0.1 + 0.2 == 0.3 が False
A: 浮動小数点の宿命。math.isclose(0.1 + 0.2, 0.3) で許容範囲つき比較を。

Q: 大規模な数値計算なら?
A: NumPy / SciPy のほうが圧倒的に高速かつ機能豊富。math は単体スカラ用と割り切る。