Obter partes inteiras e decimais de um número ao mesmo tempo com a matemática.modf em Python

O negócio

A função modf() da matemática, o módulo padrão para funções matemáticas em Python, pode ser utilizado para obter o inteiro e as partes decimais de um número simultaneamente.

Ver o artigo seguinte para divmod(), que obtém simultaneamente o quociente e o remanescente de uma divisão.

Obter peças inteiras e decimais sem módulo matemático

A aplicação de int() a um tipo de flutuador de ponto flutuante produz um valor inteiro com o ponto decimal truncado. Isto pode ser utilizado para obter a parte inteira 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 inteiras e decimais de um número simultaneamente com math.modf()

A função modf() no módulo de matemática pode ser utilizada para obter simultaneamente o inteiro e as partes decimais de um número.

math.modf() devolve o seguinte tuple Note a ordem, uma vez que a parte decimal vem primeiro.

  • (decimal, integer)
import math

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

Cada uma pode ser desembalada e atribuída a uma variável separada como se segue Tanto a parte inteira como a parte decimal são tipos flutuantes.

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 sinal será o mesmo que o sinal do valor original tanto para o número inteiro como para a parte decimal.

f, i = math.modf(-1.5)

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

Aplicável a tipos de int. Neste caso, tanto a parte inteira como a parte decimal são tipos flutuantes.

f, i = math.modf(100)

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

O seguinte método pode ser utilizado para verificar se um tipo de flutuador é um número inteiro (ou seja, a parte decimal é 0) sem obter a parte decimal. Ver o artigo seguinte.

  • float.is_integer()
Copied title and URL