2012-02-20 13 views
5

संभव डुप्लिकेट:
C programming divisionउद्देश्य ग पूर्णांक

मैं एक उपयोगकर्ता द्वारा दर्ज आवृत्ति का उपयोग accelerometer अद्यतन की अवधि की गणना करने के लिए कोशिश कर रहा हूँ।

फ्रीक किसी पूर्णांक उपयोगकर्ता द्वारा सेट है

double interval = 1/Freq; 

अंतराल = अवधि:

यह मेरा कोड है।

मेरी समस्या यह है कि मैं कहता हूं कि मैंने फ्रीक को 2 हर्ट्ज सेट किया है, इसलिए अंतराल 0.5 होना चाहिए लेकिन इसके अंतराल 0.0000000 क्यों है? क्या मैं फ्रीक को दो बार बदलने के बिना इसे बदलने के लिए कुछ भी कर सकता हूं?

+0

और कई अन्य लोगों ... – JeremyP

+1

क्यों एक अस्थायी डबल की घोषणा नहीं जिसे आप गणना के लिए उपयोग करते हैं, 'Freq' int को छोड़कर,' 1.0/tmpFreq' कर रहे हैं? –

उत्तर

5

आप पूर्णांक विभाजन का उपयोग कर रहे हैं: (1 और Freq दोनों पूर्णांक हैं)। तो परिणाम इस मामले में एक पूर्णांक होगा, और वास्तव में 0 होगा।

आप कुछ इस तरह कर सकते हैं:

double interval = 1.0/Freq; 

या

double interval = 1/(double)Freq; 
0

इसे इस तरह करते हैं,

double interval = 1.0/Freq;