title | categories | subCategories | ||
---|---|---|---|---|
float |
|
|
Tipo di dato per i numeri in virgola mobile, un numero che ha un punto decimale. I numeri in virgola mobile sono spesso utilizzati per approssimare valori analogici e continui, perché hanno una risoluzione maggiore rispetto ai numeri interi. I numeri in virgola mobile possono essere grandi fino a 3.4028235E+38 e piccoli fino a -3.4028235E+38. Vengono memorizzati in 32 bit (4 byte) di informazioni.
I float dispongono di una precisione di sole 6-7 cifre decimali. Per precisione si intende il numero totale di cifre, non il numero a destra del punto decimale. A differenza di altre piattaforme, dove è possibile ottenere una maggiore precisione utilizzando una variabile di tipo double (ad esempio fino a 15 cifre), su Arduino il double ha le stesse dimensioni del float.
I numeri in virgola mobile non sono esatti e possono dare risultati anomali quando vengono confrontati. Per esempio 6.0 / 3.0 potrebbe non essere uguale a 2.0. Si dovrebbe invece verificare che il valore assoluto della differenza tra i numeri sia inferiore a un numero piccolo.
La matematica in virgola mobile è anche molto più lenta della matematica intera nell’esecuzione dei calcoli, quindi dovrebbe essere evitata se, per esempio, è necessario eseguire un ciclo alla massima velocità per una funzione in cui le tempistiche sono critiche. I programmatori spesso si sforzano di convertire i calcoli in virgola mobile in calcoli interi per aumentarne la velocità.
Se si eseguono calcoli in virgola mobile, è necessario aggiungere un punto decimale, altrimenti verranno trattati come int. Per maggiori dettagli, consultare il Virgola mobile.
float var=val;
var
- il nome della variabile float
val
- il valore assegnato alla variabile
float myfloat;
float sensorCalbrate = 1.117;
int x;
int y;
float z;
x = 1;
y = x / 2; // y ora contiene 0, gli int non possono contenere frazioni
z = (float)x / 2.0; // z now contains .5 (si deve usare 2.0, non 2)