Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのabs()とfabs()の違いとは?絶対値を求める2つの関数を徹底解説

Pythonには数値の絶対値(absolute value)を取得するための関数として、組み込み関数の abs() と、mathモジュールに含まれる math.fabs() の2つが用意されています。どちらも数値の絶対値を返すという点では同じ役割を持っていますが、戻り値の型や扱えるデータ型において重要な違いがあります。本記事では、具体的なコード例とともに、両者の違いをわかりやすく解説します。

abs()とfabs()の主な違い

abs() 関数は、引数として渡された値に応じて、整数(int)または浮動小数点数(float)のいずれかで絶対値を返します。つまり、整数を渡せば整数型の結果が、浮動小数点数を渡せば浮動小数点数型の結果が得られます。

一方、math.fabs() 関数は、引数に整数を渡しても浮動小数点数を渡しても、常に浮動小数点数(float)型で絶対値を返すのが特徴です。

また、abs() は複素数(complex)にも対応していますが、math.fabs() は複素数を渡すとエラーが発生する点にも注意が必要です。

サンプルコード

import math

n = -23
print(abs(n))
print(math.fabs(n))

n = 21.4
print(abs(n))
print(math.fabs(n))

n = complex(10, 12)
print(abs(n))
# print(math.fabs(n))  # 複素数を渡すとエラーになる

実行結果

上記のコードを実行すると、以下のような出力が得られます。

23
23.0
21.4
21.4
15.620499351813308

実行結果のポイント

  • -23の場合: abs() は整数型の 23 を返し、math.fabs() は浮動小数点数型の 23.0 を返します。
  • 21.4の場合: どちらの関数も 21.4 を返しますが、math.fabs() の戻り値は常にfloat型です。
  • 複素数(10+12j)の場合: abs() は複素数の大きさ(絶対値)である 15.620499351813308 を計算して返します。これは √(10² + 12²) の計算結果です。一方、math.fabs() に複素数を渡すとTypeErrorが発生するため、コメントアウトしています。

使い分けのまとめ

項目abs()math.fabs()
戻り値の型入力に応じてintまたはfloat常にfloat
複素数の対応対応している非対応(エラー)
インポート不要mathモジュールが必要

通常の用途では、インポート不要で複素数にも対応している abs() を使うのが一般的です。math.fabs() は、結果を必ずfloat型で受け取りたい場合など、特定のニーズがあるときに活用するとよいでしょう。

  1. 【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説

    はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが

  2. Pythonで絶対値を計算する方法を解説!abs()関数の使い方

    Pythonの標準ライブラリに含まれる abs() 関数は、引数として渡した数値の絶対値を返します。絶対値とは、数値から符号(プラス・マイナス)を取り除いた値のことです。そのため、10 の絶対値は 10 であり、-10 の絶対値も同じく 10 となります。さらに、引数が複素数だった場合は、abs() 関数はその複素数の大きさ(マグニチュード)を返します。複素数の大きさは「√(実部² + 虚部²)」という式で計算され、例えば 3+4j の場合は √(3² + 4²) = √25 = 5.0 となります。使用例>>> abs(11.11) 11.11 >>> a