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

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 型である点に注意すれば、数値の分解処理を簡潔に書くことができます。

  1. Pythonでリスト内の要素のインデックスを取得する方法

    index()メソッドで最初の出現位置を取得する リスト(文字列やタプルなど、他のシーケンス型でも同様)に用意されている index() メソッドを使うと、特定の要素が最初に出現する位置(インデックス)を簡単に見つけることができます。 >>> L1=[a, b, c, a, x] >>> L1 [a, b, c, a, x] >>> L1.index(a) 0 この例では、リスト L1 の中で a が最初に出現するのはインデックス 0 の位置であるため、0 が返されます。なお、指定した要素がリスト内に存在しない場合は ValueError

  2. PythonでファイルのMIMEタイプを判定する2つの方法【mimetypesとpython-magic】

    PythonでファイルのMIMEタイプ(メディアタイプ)を調べたい場面は、Webアプリケーションの開発やファイルアップロード機能の実装などでよくあります。Pythonには標準ライブラリとして mimetypes モジュールが用意されており、これを使えば手軽にMIMEタイプを推測できます。 ただし、mimetypes モジュールは主にファイル名の拡張子をもとにMIMEタイプを推測する仕組みのため、拡張子が存在しないファイルや、実際の内容と拡張子が一致していないファイルに対しては、正確な結果が得られない場合がある点に注意が必要です。 mimetypesモジュールを使う方法 mimetypes.Mi