Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
abs() / round() / divmod() / pow()
数値の絶対値・丸め・除余・べき乗を計算する組み込み関数です。数値計算でよく使う基本的な演算をシンプルに記述できます。
構文
# 絶対値を返します。 abs(数値) # 数値を指定した桁数に丸めます。 round(数値, 桁数) # 商と余りをタプルで返します。 divmod(被除数, 除数) # べき乗を計算します。 pow(底, 指数) pow(底, 指数, 法) # 底^指数 mod 法(高速な剰余べき乗) # ** 演算子でもべき乗を計算できます。 底 ** 指数
関数一覧
| 関数 | 概要 |
|---|---|
| abs(数値) | 数値の絶対値を返します。整数・浮動小数点数・複素数に対応しています。 |
| round(数値, 桁数) | 数値を指定した小数点以下の桁数に四捨五入します。桁数を省略すると整数に丸めます。 |
| divmod(a, b) | aをbで割ったときの商と余りをタプル(商, 余り)で返します。 |
| pow(底, 指数) | 底の指数乗を計算します。第3引数に法を指定すると剰余べき乗を高速に計算できます。 |
| 底 ** 指数 | べき乗演算子です。『pow(底, 指数)』と同じ結果になります。 |
サンプルコード
# abs() で絶対値を取得します。
print(abs(-42)) # 『42』と出力されます。
print(abs(-3.14)) # 『3.14』と出力されます。
print(abs(3+4j)) # 複素数のノルム『5.0』と出力されます。
# round() で四捨五入します。
print(round(3.14159, 2)) # 『3.14』と出力されます。
print(round(3.14159, 4)) # 『3.1416』と出力されます。
print(round(2.5)) # 『2』と出力されます(銀行丸め)。
print(round(3.5)) # 『4』と出力されます(銀行丸め)。
print(round(1234, -2)) # 『1200』と出力されます(100の位で丸め)。
# divmod() で商と余りを同時に取得します。
quotient, remainder = divmod(17, 5)
print(quotient) # 『3』と出力されます(17 ÷ 5 = 3 余り 2)。
print(remainder) # 『2』と出力されます。
# 時間の変換に divmod() を活用します。
total_seconds = 3661
hours, remainder = divmod(total_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
print(f'{hours}時間{minutes}分{seconds}秒') # 『1時間1分1秒』と出力されます。
# pow() でべき乗を計算します。
print(pow(2, 10)) # 『1024』と出力されます。
print(2 ** 10) # 同じく『1024』と出力されます。
print(pow(2, -1)) # 『0.5』と出力されます。
# pow() の第3引数で剰余べき乗を計算します(暗号処理などで高速)。
print(pow(2, 10, 1000)) # 『24』と出力されます(2^10 mod 1000)。
概要
『abs()』は負の数を正の数に変換する絶対値関数で、数値の差の大きさを求めるときなどに使います。複素数に対しては実部と虚部のベクトルのノルム(大きさ)を返します。
『round()』はPythonの銀行丸め(偶数丸め)を採用しており、ちょうど中間の値(x.5)は偶数方向に丸められます。例えば『round(2.5)』は『2』、『round(3.5)』は『4』になります。一般的な四捨五入(0.5以上を切り上げ)とは動作が異なります。厳密な四捨五入が必要な場合は『decimal』モジュールを使ってください。
『divmod()』は商と余りを同時に計算するため、時間・分・秒への変換など桁変換処理に便利です。『pow(a, b, c)』の3引数版は大きな数のべき乗の余りを効率よく計算でき、RSAなどの暗号アルゴリズムでも使われています。
平方根・切り上げ・切り捨てなどの数学関数は『math.sqrt() / math.ceil() / math.floor()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。