Obtener las partes enteras y decimales de un número al mismo tiempo con math.modf en Python

Negocio

La función modf() de math, el módulo estándar para funciones matemáticas en Python, puede utilizarse para obtener las partes enteras y decimales de un número simultáneamente.

Véase el siguiente artículo para divmod(), que obtiene simultáneamente el cociente y el resto de una división.

Obtener partes enteras y decimales sin módulo matemático

Al aplicar int() a un tipo float de punto flotante se obtiene un valor entero con el punto decimal truncado. Esto puede utilizarse para obtener la parte entera y la parte decimal.

a = 1.5

i = int(a)
f = a - int(a)

print(i)
print(f)
# 1
# 0.5

print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>

Obtenga las partes enteras y decimales de un número simultáneamente con math.modf()

La función modf() del módulo matemático puede utilizarse para obtener simultáneamente las partes enteras y decimales de un número.

math.modf() devuelve la siguiente tupla Nótese el orden, ya que la parte decimal va primero.

  • (decimal, integer)
import math

print(math.modf(1.5))
print(type(math.modf(1.5)))
# (0.5, 1.0)
# <class 'tuple'>

Cada una de ellas puede ser descompuesta y asignada a una variable separada de la siguiente manera Tanto las partes enteras como las decimales son de tipo float.

f, i = math.modf(1.5)

print(i)
print(f)
# 1.0
# 0.5

print(type(i))
print(type(f))
# <class 'float'>
# <class 'float'>

El signo será el mismo que el del valor original tanto para las partes enteras como para las decimales.

f, i = math.modf(-1.5)

print(i)
print(f)
# -1.0
# -0.5

Aplicable a los tipos int. En este caso, tanto la parte entera como la decimal son tipos float.

f, i = math.modf(100)

print(i)
print(f)
# 100.0
# 0.0

El siguiente método puede utilizarse para comprobar si un tipo float es un entero (es decir, la parte decimal es 0) sin obtener la parte decimal. Véase el siguiente artículo.

  • float.is_integer()
Copied title and URL