Go Down

Topic: "estrarre" il punto decimale da un float, come fare? (Read 4 times) previous topic - next topic

astrobeed


In conclusione se provaste ciò che suggerite in 2 post sarebbe chiuso il caso  XD


+1  :)
Sagge parole, prima di postare del codice tocca sempre provarlo, o almeno avvisare che non è testato, altrimenti si fa solo perdere tempo alla gente.

lesto


Io non sono un genio in programmazione devo spesso documentarmi per fare cose un po' più complesse, e molte volte non mi escono come vorrei, però quando posto un pezzetto di sketch è assicurato al 100% che l'ho provato prima sul mio arduino. Diversamente farei perdere tempo a chi già sta diventando scemo per capire come fare.
In conclusione se provaste ciò che suggerite in 2 post sarebbe chiuso il caso  XD


se no fossi al lavoro.... io ho dato la logica e gli strumenti, che ce lo mettano loro il compilatore. xD


@gingardu: credo che il problema con cui ti scontri è il fatto che i float, per come vengono memorizzati, possiedono un errore. Non puoi farci niente, se vuoi usare i float. per maggiori info: http://it.wikipedia.org/wiki/IEEE_754

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

astrobeed


sto provando questo sketc  a volte funziona a volte no
e piu precisamente sembra che ha la tendenza ad arrotondare la cifra immessa


Ed ecco il classico caso di chi fa le domande e non legge tutte le risposte, ti ho avvisato molti post dietro che i float sono una rappresentazione esponenziale e che ti puoi scordare dei valori precisi, sono sempre leggermente diversi dal reale valore, calcolato con molta più risoluzione, per via degli arrotondamenti durante i calcoli e il particolare formato di rappresentazione.

pablos

Scusa gingardu però è difficile capire cosa vuoi fare, nel primo post chiedi di sapere in che posizione numerica si trova la virgola, quindi di conoscere i valori prima della virgola e dopo non ti interessa come scrivi qui:

Quote
cifra1=0  //  non ha il punto decimale
cifra2=0 //  non ha il punto decimale
cifra3=1 //  HA il punto decimale
cifra4=0  //  non ha il punto decimale
cifra5=0  //  non ha il punto decimale
cifra6=0  //  non ha il punto decimale 


quindi qualcuno non approva a convertire il valore in string, però se ti serve sapere la posizione perchè non farlo?

Se poi tu dicessi in sintesi perchè vuoi questo valore, da dove arriva questo numero float, cosa devi fare una volta trovato questo valore ti si può suggerire un altra soluzione, ti ho chiesto in un post precedente che hai ignorato perchè questa insolita domanda sulla posizione della virgola.... te lo faccio io lo sketch dimmi cosa vuoi fare :)

ciao

no comment

pablos

#29
Oct 11, 2012, 02:56 pm Last Edit: Oct 11, 2012, 02:58 pm by pablos Reason: 1
se è solo la posizione che ti serve
Code: [Select]

String stringa = "6546456456457.56720";
byte x; byte c; byte par;
char charBuf[30];

void setup()
{
 Serial.begin(9600);

 stringa.toCharArray(charBuf, 40);  
 char *p = charBuf;  
 while (*p != '\0')
 {
   c++;
   if (*p == '.') { par=c; ++p; continue;}          
   ++p;
 }  

//----------------------------------debug-----------------------------------------------
  Serial.println("stringa esaminata " + stringa);
  Serial.println("il punto si trova alla posizione " + (String)(par) + " da sinistra");
  Serial.println("il punto si trova alla posizione " + (String)(c-par+1) + " da destra");  
  Serial.println("totale dei caratteri  " + (String)c);    
}

void loop(){}
no comment

Go Up