Pythonのfmod()関数とは?剰余計算の使い方と実行例を徹底解説
Pythonのfmod()関数は、数学における剰余(モジュロ)演算を実装した関数です。2つの値に対して除算を行った際に得られる「余り」を返します。この関数は標準ライブラリのmathモジュールに含まれており、浮動小数点数の剰余計算にも対応しています。
本記事では、正の数・負の数・タプルやリストなど、さまざまなケースでのfmod()の動作を具体例とともに見ていきます。
正の数の場合
正の数同士の演算では、第1引数を第2引数で割った余りが結果として返されます。興味深い点として、整数を渡しても結果は常にfloat型で返されるという特徴があります。type()関数で確認してみましょう。
コード例
from math import fmod print(fmod(6, 7)) print(type(fmod(6, 7))) print(fmod(0, 7)) print(fmod(83.70, 6.5))
実行結果
6.0 <class 'float'> 0.0 5.7
負の数の場合
fmod()の結果の符号は、第1引数(被除数)の符号に依存します。つまり、第1引数が負であれば結果も負になり、第1引数が正であれば結果も正になります。これはPythonの%演算子(結果の符号が除数に依存する)とは異なる挙動なので注意が必要です。
コード例
from math import fmod print(fmod(29, -7)) print(fmod(-29, 7)) print(fmod(-29, -7)) print(fmod(-30, 8.98))
実行結果
1.0 -1.0 -1.0 -3.0599999999999987
上記のように、fmod(29, -7)は正の値を返す一方、fmod(-29, 7)やfmod(-29, -7)は負の値を返します。また、浮動小数点数を含む計算では、コンピュータ内部の二進数表現の影響により、微小な誤差が生じることもあります。
タプルやリストへの応用
タプルやリストに格納された個々の要素に対しても、インデックスで参照しながら同じようにfmod()を適用できます。
コード例
from math import fmod
Tuple = (25, 13, -7, -60)
List = [-69, 58, -49, 36]
print("\nTuples: ")
print(fmod(Tuple[3], 7))
print(fmod(Tuple[1], -7))
print("Lists: ")
print(fmod(List[3], 6))
print(fmod(List[0], -25))実行結果
Tuples: -4.0 6.0 Lists: 0.0 -19.0
まとめ
fmod()関数は、mathモジュールに属する剰余計算のための関数であり、以下の特徴があります。
- 結果は常にfloat型で返される
- 結果の符号は第1引数(被除数)の符号に従う
- Pythonの
%演算子とは符号の扱いが異なるため、用途に応じて使い分ける
特に浮動小数点数を扱う科学技術計算や数値処理の場面では、fmod()の挙動を正しく理解しておくことが重要です。
-
Pythonのissubset()関数とは?部分集合の判定方法を実例付きで解説
本記事では、Python標準ライブラリに用意されているissubset()関数の仕組みと使い方について詳しく解説します。 issubset()メソッドは、あるセット(集合)のすべての要素が、引数として渡した別のセットにも含まれている場合にブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 下の図では、BはAの部分集合です。もしAとBが同一のセットであれば、両者は互いに部分集合の関係にあるといえます。つまり、両方のセットがまったく同じ要素を持っているということを意味します。 構文 <set 1>.issubset(<set 2>) 戻り値
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print