Numeri reali

Nella programmazione tutti i numeri si distinguono innanzitutto in numeri interi (integer) e frazionari (float ).

Per determinare di che tipo è la tua variabile, Python ha una funzione incorporata type():
nome = "Ivan"
print(tipo(nome))  #lo schermo mostrerà <classe 'str'>
n=5
print(tipo(n))  # <classe 'int'>
r=5.0
print(tipo(r))  # <classe 'float'>

Il valore 5.0 è un numero rappresentato come decimale.  Nella programmazione, tutti i numeri frazionari sono numeri che hanno un punto decimale nella loro notazione. Tali numeri sono chiamati numeri reali.
 
Un numero reale è un numero che contiene un punto decimale. Le parti intere e frazionarie sono separate l'una dall'altra da un punto, non da una virgola come in matematica.

Ad esempio, numeri \(1 \over 2\)\(\sqrt 2\)   sono numeri reali int non è sufficiente per memorizzare tali numeri. 
Python utilizza il tipo di dati  float.
per rappresentare i numeri reali.
Anche se la parte frazionaria del numero è uguale a zero, come nella variabile r nell'esempio, il compilatore creerà comunque una variabile reale in memoria. Poiché c'è un punto decimale nella notazione del numero!. Il punto decimale, per così dire, è un segnale per il traduttore che è necessario creare una variabile reale. 

Numeri molto grandi e molto piccoli  sono scritti usando "virgola mobile" (nel cosiddetto formato scientifico).  
In formato scientifico, un numero è rappresentato come mantissa(parte significativa del numero) ed esponente. Quando vengono scritti, la mantissa e l'esponente sono separati l'uno dall'altro dalla lettera e (che in una certa misura denota 10). 

Ad esempio, puoi memorizzare il valore della carica di un elettrone ( \(1.60217662 \times 10^{-19}\) C) in un variabile, scrivendo nella seguente forma  ;
El = 1.60217662e-19 

Quasi tutti i numeri reali non possono essere memorizzati nella memoria del computer con una precisione perfetta, poiché per la loro memorizzazione viene allocato un numero limitato di bit.
 
Pertanto, quando si calcola con numeri reali, si accumulano errori dovuti all'inesattezza della rappresentazione. Inoltre, minore è lo spazio allocato, maggiore sarà questo errore.

 

Invio

Per inserire un numero reale utilizzando la funzione input(), è necessario convertire la stringa di caratteri, che è il risultato della funzione input(), in un numero reale utilizzando la funzione >float():
x = float(input())
Se devi inserire più valori da una riga contemporaneamente, utilizziamo lo stesso metodo degli interi:
x, y = map(float, input().split())

 

Uscita

Quando si visualizzano numeri reali, per impostazione predefinita vengono visualizzate 16 cifre decimali. Questo formato non è sempre necessario. Se hai bisogno di abbreviare il formato di output, usa output formattato o stringhe F.


Formatta output
Per fare questo, applica il metodo format() alla stringa che vogliamo produrre. E all'interno della riga i formati sono scritti tra parentesi graffe dopo i due punti. Le parentesi della funzione format() indicano i nomi delle variabili (o costanti), i cui valori verranno sostituiti nella stringa invece delle parentesi graffe nel formato specificato. Il numero di variabili deve corrispondere al numero di parentesi graffe. Questo metodo funziona in Python a partire dalla versione 3.
 
Esempio
  Spiegazione Uscita su schermo
x = 1/6
   
print("{:f}".format(x))
format :f restituisce 6 cifre per impostazione predefinita  nella parte frazionaria
0.166667
print("{:.3f}".format(x))
:.3 significa emettere 3 caratteri dopo il punto
0,167
print("{:12.4e}".format(x))
:12.4 - il primo numero (12) specifica  il numero totale di posizioni per visualizzare il numero (compreso il punto);
secondo numero (4) - il numero di cifre nella parte frazionaria;
format e - visualizza il numero in formato scientifico.
  1.6667e-01
 


F-string 
Un altro modo per visualizzare una stringa formattata è usare le stringhe f (f-string). Questo metodo è disponibile in Python a partire dalla versione 3.6.
print(f"{x:f}")
print(f"{x:.3f}")
print(f"{x:12.4e}") 
F-string è una stringa jolly che inizia con (o F). Ogni volta che vogliamo inserire il valore di una variabile in una stringa, dobbiamo aggiungere   nome della variabile racchiuso tra parentesi graffe {}. All'interno delle parentesi graffe, puoi specificare un metodo di formattazione simile al metodo fomat().


Oltre al metodo format() e alle stringhe F, puoi usare altri modi per formattare l'output. Otteniamo lo stesso risultato scrivendo le istruzioni di output come segue:
print("%f" % (x))
stampa("%.3f" % (x))
print("%12.4e" % (x))
Questo metodo di formattazione imita la funzione  printf() del linguaggio C. Il metodo è considerato obsoleto, ma in alcuni casi è più conveniente. A parte questo, questo metodo è l'unico (di quelli menzionati qui) che funziona in Python versione 2.5 e precedenti.

Conversione di un numero reale in numero intero

Quando si risolvono problemi, è spesso necessario arrotondare i numeri reali ai valori interi più vicini. Ci sono due funzioni per questo.

Da ricordare!
  1. Funzione int(x) - scarta la parte frazionaria di un numero reale x.
  2. La funzione round(x) - arrotonda il numero reale x all'intero più vicino (se la parte frazionaria del numero è 0,5, allora il numero viene arrotondato a il numero pari più vicino).
 
Esempi
print(int(20.12345)) # 20
print(round(2.5)) # 2
print(round(3.5)) # 4
print(arrotonda(-2.5)) # -2
print(round(-3.5)) # -4