Ciao a tutti, voglio convertire una stringa in un float. Ho cercato la soluzione già su internet, ma trovo onestamente difficoltà..
ho pensato di convertire dapprima la stringa in carattere e poi in float in questo modo:
in questa maniera la conversione è avvenuta perfettamente. Poi faccio la conversione da char a float:
float y=atof(x);
Serial.println(y);
E qui la precisione viene persa.. cioè mi stampa solo 2 numeri dopo la virgola ma a me servono tutte le cifre. Come mai accade questo arrotondamento?
Ho anche provato ad utilizzare la funzione String.toFloat() ma anche in questo caso non mi stampa tutte le cifre dopo la virgola.. come posso fare?
Grazie
una cosa vorrei capire... ma quindi la variabile float contiene l'intero numero con la virgola o no?
Cioè è un problema di Serial.println il fatto che non me lo visualizza correttamente?
Cioè se io adesso volessi prendere il float y e non so.. visualizzarlo in una pagina web che cosa vedrò?
Il numero completo oppure il numero appossimato?
Un float contiene una cifra con le virgole. Usa 32 bit e un formato particolare IEEE
Come viene "visualizzato" dipende da quale "comando" usi (e a quale libreria appartiene quel comando).
La Serial.print() e println() quando gli passi un float richiede anche un parametro aggiuntivo per sapere quanti decimali deve stampare, di default (ovvero no secondo parametro) stampa solo 2 decimali.
In sintesi, la conversione è okay, il numero ha tutti i decimali, è solo un problema di "come" visualizzi il numero su serial monitor attraverso la print.
Se usi un comando in altro contesto, esempio web, dipenderà da quella libreria e dal comando e dai parametri che devi passare. Bisogna leggere bene il reference (documentazione) di quel comando/libreria.