Obtén partes enteiras e decimais dun número ao mesmo tempo con math.modf en Python

Negocios

A función modf() de math, o módulo estándar para funcións matemáticas en Python, pódese usar para obter as partes enteiras e decimais dun número simultaneamente.

Vexa o seguinte artigo para divmod(), que obtén simultaneamente o cociente e o resto dunha división.

Obter partes enteiras e decimais sen módulo matemático

Ao aplicar int() a un tipo flotante de coma flotante obtense un valor enteiro co punto decimal truncado. Isto pódese usar para obter a parte enteira e a 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'>

Obter partes enteiras e decimais dun número simultaneamente con math.modf()

A función modf() do módulo matemático pódese usar para obter simultaneamente as partes enteiras e decimais dun número.

math.modf() devolve a seguinte tupla Teña en conta a orde, xa que a parte decimal aparece primeiro.

  • (decimal, integer)
import math

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

Cada unha pódese desempaquetar e asignar a unha variable separada do seguinte xeito. Tanto as partes enteiras como as decimais son de tipo flotante.

f, i = math.modf(1.5)

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

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

O signo será o mesmo que o signo do valor orixinal tanto para as partes enteiras como para as decimais.

f, i = math.modf(-1.5)

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

Aplicable aos tipos int. Neste caso, tanto as partes enteiras como as decimais son de tipo flotante.

f, i = math.modf(100)

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

O seguinte método pódese usar para comprobar se un tipo flotante é un número enteiro (é dicir, a parte decimal é 0) sen obter a parte decimal. Consulta o seguinte artigo.

  • float.is_integer()
Copied title and URL