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()