Obtenir les parties entières et décimales d’un nombre en même temps avec math.modf en Python

Affaires

La fonction modf() de math, le module standard des fonctions mathématiques en Python, peut être utilisée pour obtenir simultanément les parties entières et décimales d'un nombre.

Voir l'article suivant pour divmod(), qui obtient simultanément le quotient et le reste d'une division.

Obtenir les parties entières et décimales sans module mathématique

L'application de int() à un type de flottant à virgule flottante donne une valeur entière avec le point décimal tronqué. Ceci peut être utilisé pour obtenir la partie entière et la partie décimale.

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'>

Obtenir les parties entières et décimales d'un nombre simultanément avec math.modf()

La fonction modf() du module mathématique peut être utilisée pour obtenir simultanément les parties entières et décimales d'un nombre.

math.modf() renvoie le tuple suivant Notez l'ordre, puisque la partie décimale vient en premier.

  • (decimal, integer)
import math

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

Chacune d'entre elles peut être décomposée et affectée à une variable distincte comme suit Les parties entières et décimales sont toutes deux de type flottant.

f, i = math.modf(1.5)

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

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

Le signe sera le même que le signe de la valeur originale pour les parties entières et décimales.

f, i = math.modf(-1.5)

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

Applicable aux types int. Dans ce cas, les deux parties, entière et décimale, sont des types float.

f, i = math.modf(100)

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

La méthode suivante peut être utilisée pour vérifier si un type de flottant est un entier (c'est-à-dire que la partie décimale est 0) sans obtenir la partie décimale. Voir l'article suivant.

  • float.is_integer()