Go Down

Topic: arduino sbaglia la divisione??? (Read 904 times) previous topic - next topic

Paolo S

Oct 11, 2010, 12:35 pm Last Edit: Oct 11, 2010, 12:36 pm by paolosanna Reason: 1
Scusate se ripeto la domanda ma non riesco a venirne a capo.. come mai questo:

int tempo = int((60*1000) / ( 20 * float(velocita))) ;

mi dà sempre come risultato (mi pare) -27 ... mentre invece dovrebbe dare 100 posto che velocità e pari a 30??

ho provato in ntutti modi, variabile double, float, dentro la funzione, fuori etc.. pare che la divisione proprio non gli vada bene...

qualche suggerimento????

pitusso

Si tratta sicuramente di un problema di casting.

Paolo S

casting??.. e cosè.. faccio una ricerca su questo forum?

frog

#3
Oct 11, 2010, 12:53 pm Last Edit: Oct 11, 2010, 12:54 pm by furgorsin Reason: 1
il casting è il forzare il compilatore ad utilizzare una variabile come se fosse di un tipo diverso da quello che hai dichiarato
un esempio è float(velocita)

riesci a provare con
int tempo = int(3000.0 / float(velocita))
e vedere se cambia qualcosa?

uwefed

Ciao PaoloSanna

60000 caricato in una variabile int (con segno) é il numero negativo -27232.

La soluzione é quella proposta da frog oppure definire la variabile Tempo come float. e convertirla in un secondo momento.

Ciao Uwe

Go Up