http://docs.python.org/2/library/math.htmlから:
math.frexp(x)
x の仮数と指数をペア (m, e) として返します。m は floatで、e はx == m * 2**e と正確に一致する整数です。x がゼロの場合は (0.0, 0) を返し、それ以外の場合は 0.5 <= abs(m) < 1 を返します。これは、float の内部表現を移植可能な方法で「分解」するために使用されます。
math.modf(x)
x の小数部分と整数部分を返します。どちらの結果も x の符号を持ち、floatです。
この関連する質問では、フロートを返すことは ceil と floor では意味がないことが指摘されているため、Python 3 では整数を返すように変更されました。modf
の整数結果も整数として返されない理由はありますか? Python 2.7 では:
In [2]: math.floor(5.5)
Out[2]: 5.0
In [3]: math.modf(5.5)
Out[3]: (0.5, 5.0)
In [4]: math.frexp(5.5)
Out[4]: (0.6875, 3)
Python 3 では:
In [2]: math.floor(5.5)
Out[2]: 5
In [3]: math.modf(5.5)
Out[3]: (0.5, 5.0)
In [4]: math.frexp(5.5)
Out[4]: (0.6875, 3)