Pythonのmath.modf()で小数部と整数部を2項目タプルとして取得する方法
Pythonで数値の小数部と整数部を同時に取得するには?
Pythonの標準ライブラリ math モジュールに含まれる modf() 関数を使うと、数値 x の小数部と整数部を2項目のタプルとして一度に取得できます。
math.modf(x) の主な特徴は以下の通りです。
- 戻り値はタプル形式で、最初の要素が小数部、2番目の要素が整数部です。
- 整数部も
float型(例:100.0)として返されます。 - 小数部・整数部ともに、元の数値 x と同じ符号を持ちます(負の数の場合は両方が負になります)。
基本的な使い方
>>> import math >>> math.modf(100.73) (0.730000000000004, 100.0) >>> math.modf(-5.55) (-0.5499999999999998, -5.0)
上記の実行結果からわかるように、正の数 100.73 に対しては (0.73..., 100.0)、負の数 -5.55 に対しては (-0.54..., -5.0) が返され、どちらの部分も元の値と同じ符号になっています。
注意点:浮動小数点数の誤差
出力例にある 0.730000000000004 や -0.5499999999999998 のような値は、コンピュータが浮動小数点数を2進数で扱うことに起因する誤差です。厳密な10進数表現が必要な場合は、decimal.Decimal を使うか、round() 関数で桁数を丸めて表示するとよいでしょう。
>>> import math >>> frac, int_part = math.modf(100.73) >>> round(frac, 2) 0.73 >>> int_part 100.0
まとめ
math.modf() は「小数部が先、整数部が後」という順序のタプルを返す関数です。符号の扱いや戻り値が float 型である点に注意すれば、数値の分解処理を簡潔に書くことができます。
-
Pythonでリスト内の要素のインデックスを取得する方法
index()メソッドで最初の出現位置を取得する リスト(文字列やタプルなど、他のシーケンス型でも同様)に用意されている index() メソッドを使うと、特定の要素が最初に出現する位置(インデックス)を簡単に見つけることができます。 >>> L1=[a, b, c, a, x] >>> L1 [a, b, c, a, x] >>> L1.index(a) 0 この例では、リスト L1 の中で a が最初に出現するのはインデックス 0 の位置であるため、0 が返されます。なお、指定した要素がリスト内に存在しない場合は ValueError
-
PythonでファイルのMIMEタイプを判定する2つの方法【mimetypesとpython-magic】
PythonでファイルのMIMEタイプ(メディアタイプ)を調べたい場面は、Webアプリケーションの開発やファイルアップロード機能の実装などでよくあります。Pythonには標準ライブラリとして mimetypes モジュールが用意されており、これを使えば手軽にMIMEタイプを推測できます。 ただし、mimetypes モジュールは主にファイル名の拡張子をもとにMIMEタイプを推測する仕組みのため、拡張子が存在しないファイルや、実際の内容と拡張子が一致していないファイルに対しては、正確な結果が得られない場合がある点に注意が必要です。 mimetypesモジュールを使う方法 mimetypes.Mi