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 minimi 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 un 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, un ciclo deve essere eseguito alla massima velocità per una funzione di temporizzazione critica. I programmatori spesso si sforzano di convertire i calcoli in virgola mobile in calcoli interi per aumentare 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)