2010-06-04 14 views
24

आप दो पूर्णांक कैसे विभाजित करते हैं और सी में डबल या फ्लोट उत्तर प्राप्त करते हैं?एक पूर्णांक विभाजन में भिन्नता कैसे प्राप्त करें?

+2

"दशमलव" पूर्णांक या गैर पूर्णांक संख्या पर लागू होता है जो ("हेक्साडेसिमल", "अष्टाधारी", "बाइनरी" के रूप में) एक प्रतिनिधित्व है। आपका मतलब है, मुझे लगता है, "एक गैर-पूर्णांक परिणाम प्राप्त करें"। – leonbloy

+0

इस प्रकार आप पूर्णांक विभाजन 'printf ("% d% d /% d" x/y, x% y, y) के साथ भिन्नताएं (तर्कसंगत संख्या) प्राप्त करते हैं; '। क्या आप वाकई एक गैर-पूर्णांक परिणाम नहीं चाहते हैं? – Brendan

उत्तर

41

आपको एक या दूसरे को float या double पर डालना होगा।

int x = 1; 
int y = 3; 

// Before 
x/y; // (0!) 

// After 
((double)x)/y; // (0.33333...) 
x/((double)y); // (0.33333...) 
बेशक

, सुनिश्चित करें कि आप एक double या float में परिणाम स्टोर डिवीजन के हैं कि बनाते हैं! यदि आप परिणाम को int में संग्रहीत करते हैं तो यह आपको कोई अच्छा नहीं करता है।


बारे @ चाड की टिप्पणी ("[tailsPerField setIntValue:tailsPer]"):

एक डबल पास या setIntValue को नाव जब आप setDoubleValue है, आदि उपलब्ध है। यह शायद वही मुद्दा है जैसा मैंने टिप्पणी में उल्लेख किया है, जहां आप एक स्पष्ट कलाकार का उपयोग नहीं कर रहे हैं, और आपको एक अवैध मान मिल रहा है क्योंकि एक डबल को int के रूप में पढ़ा जा रहा है।

उदाहरण के लिए, अपने सिस्टम पर, फ़ाइल:

#include <stdio.h> 
int main() 
{ 
    double x = 3.14; 
    printf("%d", x); 
    return 0; 
} 

आउटपुट:

1374389535

क्योंकि डबल प्रयास किया गया था एक पूर्णांक के रूप में पढ़ा जा सकता है।

+0

दाएं। विभाजन करने से पहले पूर्णांक को कनवर्ट करें। – DOK

+0

डबल टीपी; डबल एक्स; एक्स = टीएन; // (टीएन एक int है) आमतौर पर 10 टीपी = एक्स/एफएन; // एफएन भी एक int (आमतौर पर 5) है लेकिन मुझे अभी भी 0 –

+0

@ चाड मिल गया है: कोड सही दिखता है। आपने कैसे निर्धारित किया है कि परिणाम शून्य है? क्या आप कुछ प्रिंटिंग ("% d", टीपी) 'कर रहे हैं? वह एक int के रूप में डबल की सामग्री मुद्रित करने का प्रयास करता है, और आपको सही परिणाम नहीं मिलेंगे। आपके कंपाइलर ने आपको चेतावनी दी होगी कि आपने ऐसा किया है। एक प्रारूप के लिए प्रारूप स्ट्रिंग '% lf' है। –

3

टाइप-कास्टिंग का उपयोग करें। उदाहरण के लिए,

main() 
    { 
     float a; 
     int b=2, c= 3; 
     a=(float)b/(float)c; // This is type-casting 
     printf("%f",a); 
    } 
संबंधित मुद्दे