Ottenere parti intere e decimali di un numero allo stesso tempo con math.modf in Python

Attività commerciale

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