Pages: [1]   Go Down
Author Topic: arduino sbaglia la divisione???  (Read 848 times)
0 Members and 1 Guest are viewing this topic.
Oristano
Offline Offline
Sr. Member
****
Karma: 0
Posts: 252
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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????
« Last Edit: October 11, 2010, 05:36:17 am by paolosanna » Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2309
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tratta sicuramente di un problema di casting.
Logged

Oristano
Offline Offline
Sr. Member
****
Karma: 0
Posts: 252
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
« Last Edit: October 11, 2010, 05:54:04 am by furgorsin » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 258
Posts: 21487
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: