La funzione modf() di math, il modulo standard per le funzioni matematiche in Python, può essere usata per ottenere le parti intere e decimali di un numero simultaneamente.
Vedi il seguente articolo per divmod(), che ottiene simultaneamente il quoziente e il resto di una divisione.
Ottenere parti intere e decimali senza modulo matematico
Applicando int() a un tipo float a virgola mobile si ottiene un valore intero con il punto decimale troncato. Questo può essere usato per ottenere la parte intera e la parte decimale.
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'>
Ottenere parti intere e decimali di un numero simultaneamente con math.modf()
La funzione modf() nel modulo math può essere usata per ottenere simultaneamente le parti intere e decimali di un numero.
math.modf() restituisce la seguente tupla Notate l'ordine, poiché la parte decimale viene prima.
(decimal, integer)
import math
print(math.modf(1.5))
print(type(math.modf(1.5)))
# (0.5, 1.0)
# <class 'tuple'>
Ognuno può essere spacchettato e assegnato a una variabile separata come segue Entrambe le parti intere e decimali sono di 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'>
Il segno sarà uguale al segno del valore originale per entrambe le parti intere e decimali.
f, i = math.modf(-1.5)
print(i)
print(f)
# -1.0
# -0.5
Applicabile ai tipi int. In questo caso, sia la parte intera che quella decimale sono tipi float.
f, i = math.modf(100)
print(i)
print(f)
# 100.0
# 0.0
Il seguente metodo può essere usato per controllare se un tipo float è un intero (cioè, la parte decimale è 0) senza ottenere la parte decimale. Vedere il seguente articolo.
float.is_integer()