2012-02-20 13 views
5

Eventuali duplicati:
C programming divisionObjective C int a doppio calcolo

Sto cercando di calcolare il periodo di aggiornamenti accelerometro che utilizzano una frequenza utente inserito.

questo è il mio codice:

double interval = 1/Freq; 

interval = periodo

Freq è un int impostato dall'utente.

Il problema che sto riscontrando è che posso impostare Freq su 2Hz, quindi l'intervallo dovrebbe essere 0,5 ma invece l'intervallo è 0,0000000 perché è questo? Posso fare qualcosa per cambiarlo senza cambiare Freq in un doppio?

+0

e molti altri ... – JeremyP

+1

perché non dichiarare una doppia temporanea che usi per il calcolo, lasciando 'Freq' un int, facendo' 1.0/tmpFreq'? –

risposta

5

Si sta utilizzando la divisione integer: (sia 1 sia Freq sono numeri interi). Quindi il risultato sarà un numero intero e più esattamente 0 in questo caso.

Si può fare qualcosa di simile:

double interval = 1.0/Freq; 

O

double interval = 1/(double)Freq; 
0

farlo in questo modo,

double interval = 1.0/Freq;