2010-02-27 20 views
15

मुझे यह सी कोड मिला।डिवीजन परिणाम हमेशा शून्य

#include <stdio.h> 

int main(void) 
{ 
     int n, d, i; 
     double t=0, k; 
     scanf("%d %d", &n, &d); 
     t = (1/100) * d; 
     k = n/3; 
     printf("%.2lf\t%.2lf\n", t, k); 
     return 0; 
} 

मैं जानना चाहता हूँ क्यों मेरे चर 'टी' हमेशा शून्य (printf समारोह में)?

+0

यह भी देखें http://stackoverflow.com/questions/1580332/stdpow-gives-a-wrong-approximation-for-fractional-exponents/1580344 – GManNickG

+0

lol - सी में पूर्णांक विभाजन मेरा पहला सिर स्क्रैचर भी था। तब प्रवाह पर कोई ढेर नहीं - बस एक हास्यहीन प्रोफेसर –

उत्तर

23

t = (1/100) * d; 

1 और 100 पूर्णांक मूल्यों, पूर्णांक विभाजन ट्रंकेटस हैं, तो यह यह इस

t = (0) * d; 
की तरह ही है

आपको लगता है कि इस

t = (1.0/100.0) * d; 

की तरह एक नाव लगातार आप भी इस

k = n/3.0; 
+9

या बस 'd/100.0' का उपयोग करें। – Joey

0

आप पूर्णांक विभाजन का उपयोग कर रहे हैं, और 1/100 हमेशा पूर्णांक विभाजन में शून्य से नीचे जाने जा रहा है।

आप चल बिन्दु विभाजन करने के लिए और बस परिणाम काटना चाहते हैं तो आपके सुनिश्चित कर सकते हैं कि आप चल सूचक शाब्दिक उपयोग कर रहे हैं के बजाय, और घ परोक्ष आप के लिए परिवर्तित किया जाएगा: क्योंकि इस अभिव्यक्ति में

t = (int)((1.0/100.0) * d); 
0

मुझे लगता है कि साथ भी ऐसा ही कर सकते हैं बनाने की जरूरत है इसकी वजह से

t = (1/100) * d; 

1/100 पूर्णांक विभाजन के रूप में = 0

फिर 0 * डी हमेशा रों 0 के बराबर

अगर आप 1.0/100.0 मुझे लगता है कि यह काम करेगा सही ढंग से

-2
t = (1/100) * d; 

कि हमेशा 0 के बराबर होती है है, तो आप इस

t=(1%100)*d 

करना और 0

में जोड़ सकते हैं कर
+0

स्टैक ओवरफ़्लो में आपका स्वागत है। यदि आप किसी पुराने प्रश्न का उत्तर अच्छी तरह से स्थापित और सही उत्तरों के साथ देने का निर्णय लेते हैं, तो दिन में देर से एक नया उत्तर जोड़ने से आपको कोई क्रेडिट नहीं मिल सकता है। यदि आपके पास कुछ विशिष्ट नई जानकारी है, या आप आश्वस्त हैं कि अन्य उत्तरों सभी गलत हैं, तो हर तरह से एक नया जवाब जोड़ें, लेकिन 'अभी तक एक और जवाब' पूछे जाने के सवाल के साढ़े सालों बाद समान जानकारी दी गई आपको ज्यादा क्रेडिट नहीं कमाएगा। –

संबंधित मुद्दे