2011-05-12 13 views
8

में डबल नंबरों को गोल करना मुझे अगले सबसे बड़े पूर्णांक मान के लिए डबल मान को गोद लेने के लिए सी कोड की आवश्यकता है।उद्देश्य-सी

उदाहरण के लिए, अगर मेरे पास है:

1.0 (double) यह होना चाहिए 1 (int)
1.01 (double) यह होना चाहिए 2 (int)
5.67 (double) यह होना चाहिए 6 (int)
76.43 (double) यह होना चाहिए 77 (int)

वहाँ एक समाधान है?

+3

[इतने सारे डुप्लिकेट] (http://stackoverflow.com/search?q=%5Bobjc%5D+round+up+double) ... –

उत्तर

30

<math.h> से ceil() समारोह का उपयोग करें:

#include <math.h> 

double x = 1.01;  // x = 1.01 
double y = ceil(x); // y = 2.0 
int i = (int)y;  // i = 2 

या अधिक संक्षेप में, तुम बस पूर्णांक परिणाम चाहते हैं:

int i = (int)ceil(x); 
+0

आप करना चाह सकते हैं 'int' में कनवर्ट करने से पहले परिणाम की सीमा की जांच करें, अन्यथा रूपांतरण अपरिभाषित व्यवहार का आह्वान करता है। –

+0

@R .: सच - सादगी के लिए मैं मान रहा हूं कि परिणाम 'int' की सीमा के भीतर झूठ बोलने के लिए जाना जाता है लेकिन अधिक सामान्य मामले में हमें रूपांतरण से पहले रेंज जांच करने की आवश्यकता है। –

-1

मान लें कि आपका नाव संख्या nr में है। कोई निर्माण में कार्य:

float nr; 
int temp; 
if (nr % 10 > 0) { 
    temp = nr++; 
} else { 
    temp = nr; 
} 
nr = temp; 
+0

अनावश्यक असाइनमेंट ('एनआर ++'?), अंतर्निहित कास्टिंग, और वर्बोजिटी के अलावा, कोड में एक त्रुटि है: 'nr% 10' शायद' nr% 1' होना चाहिए। – CompuChip