PROBLEMI CON LE VARIABILI

Scusate la mia ignoranza nel campo delle variabili con la virgola, ai vostri occhi la domanda che sto per farvi sembrerà banale ma per me non è così.
Perché il seguente codice

float a = 0.000001;
int b = 1000;
float c = a*b;
void setup() {
  Serial.begin(9600);

}

void loop() {
  Serial.println(a);
  delay(1000);
}

mi da come risultato 0,00?

Forse volevi stampare c e non a?

Si volevo stampare c, fai finta che al posto di a ci sia c.Ho scritto "a" a causa di una successiva prova.In ogni caso, sia stampando c che stampando a mi da sempre 0,00

Il problema potrebbe essere dato dalla precisione dei "float" (tienine sempre conto) ...

Se leggi il reference c'è chiaramente scritto :

Floats have only 6-7 decimal digits of precision. That means the total number of digits, not the number to the right of the decimal point.

inoltre, nella Serial.println() DEVI specificare il numero di decimali (default 2) ...

Guglielmo

... ho appena provato, difatti specificando :

Serial.println(c, 5);

... stampa correttamente il valore :wink:

Guglielmo

Grazie mille Guglielmo,mi sento come un anziano quando chiede delucidazioni sull'uso dei cellulari a un adolescente :grinning:
Float e casting non sono mai stati il mio forte, anche perché andando ancora al liceo arranco lezioni di programmazione, spesso raffazzonate, dopo aver finito di studiare.

sarrio:
Float e casting non sono mai stati il mio forte, anche perché andando ancora al liceo arranco lezioni di programmazione, spesso raffazzonate, dopo aver finito di studiare.

Si, ma come ti ho poi spiegato nei due post qua sopra, in questo caso non si tratta di "casting", ma di precisione da indicare alla Serial.print() e, da ricordare, le limitazioni sul numero di cifre che trattano i float. :wink:

Guglielmo