| この記事の要点 |
|
一覧
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
+ | 加算 | 7 + 2 | 9 |
- | 減算 | 7 - 2 | 5 |
* | 乗算 | 7 * 2 | 14 |
/ | 除算(必ず float) | 7 / 2 | 3.5 |
// | 切り捨て除算 | 7 // 2 | 3 |
% | 剰余 | 7 % 2 | 1 |
** | べき乗 | 7 ** 2 | 49 |
負数での // と %
ここが他言語といちばん違うところです。Python の // は負の無限大方向へ切り捨て(床関数)、% の符号は右オペランドに合わせます。
print(7 // 2, 7 % 2) # 3 1
print(-7 // 2, -7 % 2) # -4 1 ← -3 ではなく -4、余りは正
print(7 // -2, 7 % -2) # -4 -1 ← 余りの符号は右側に合う
# 0 方向に丸めたいときは int() か math.trunc()
import math
print(int(-7 / 2), math.trunc(-7 / 2)) # -3 -3
# 商と余りを同時に得る
print(divmod(-7, 2)) # (-4, 1)
「a == (a // b) * b + (a % b) が常に成り立つ」という関係は保たれます。剰余が必ず非負になるので、循環インデックスの計算に負数を渡しても安全です。
days = ["月", "火", "水", "木", "金", "土", "日"]
print(days[-3 % 7]) # 金 ← 負のシフトでも例外にならない
int はオーバーフローしない
print(2 ** 100)
# 1267650600228229401496703205376
import sys
print(sys.maxsize) # プラットフォーム依存の目安値であって上限ではない
print(sys.maxsize + 1) # 問題なく計算できる
上限が無い代わりに、桁が増えるほど演算コストが上がります。速度が要る数値計算では numpy の固定幅整数を使いますが、そちらはオーバーフローで折り返す点に注意してください。
ゼロ除算
try:
1 / 0
except ZeroDivisionError as e:
print(e) # division by zero
try:
1 % 0
except ZeroDivisionError as e:
print(e) # integer modulo by zero
# float は inf にはならず、同じく例外
# ただし numpy は警告を出して inf / nan を返す(挙動が違う)
浮動小数の誤差
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # False
import math
print(math.isclose(0.1 + 0.2, 0.3)) # True ← 比較はこれ
from decimal import Decimal
print(Decimal("0.1") + Decimal("0.2")) # 0.3 ← 金額計算はこちら
from fractions import Fraction
print(Fraction(1, 3) + Fraction(1, 6)) # 1/2
Decimal は文字列から作るのが要点です。Decimal(0.1) と書くと float の誤差をそのまま取り込んでしまいます。
丸めの注意
print(round(0.5), round(1.5), round(2.5)) # 0 2 2
# Python の round は「偶数丸め(銀行家の丸め)」。四捨五入ではない
from decimal import Decimal, ROUND_HALF_UP
print(Decimal("2.5").quantize(Decimal("1"), rounding=ROUND_HALF_UP)) # 3
関連
- 演算子 — 親カテゴリ
- 代入演算子 —
+=などの複合代入 - 比較演算子 — float の比較
- round / math モジュール
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09