2010-04-08 16 views
17

सी में, इन दोनों के बीच क्या अंतर है?सी: (int) x और floor (x) के बीच अंतर?

float myF = 5.6; 

printf("%i \n", (int)myF); // gives me "5" 
printf("%ld \n", floor(myF)); // also "5"? 

दूसरे पर एक बेहतर कब होता है?

+10

'मंजिल (-5.5)' – tzenes

+0

का प्रयास करें [कास्ट टू इंट बनाम फर्श] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/3300290/cast-to-int-vs-floor) – STF

उत्तर

29

नकारात्मक अंतर की एक बड़ी अंतर है; यदि आप myF से -5.6 बदलते हैं, तो एक इंट रिटर्न -5 पर कास्टिंग करते हैं जबकि floor(myF)-6 है।

के रूप में जो बेहतर है, एक सामान्य नियम के मैं एक पूर्णांक के लिए एक ही कलाकारों को कहेंगे यदि आप जानते हैं है कि आप क्या जरूरत के रूप में करने के लिए - और जब से तुम यहाँ पूछ रहे हैं, संभावना है कि आप शायद चाहते हैं floor

(भी ध्यान रखें कि printf स्वरूपण के साथ, %ld एक लंबे पूर्णांक है, और एक डबल %lf है।)

1

क्या आप परिणाम को पूर्णांक या डबल के रूप में चाहते हैं?

यदि आप एक पूर्णांक चाहते हैं, कास्ट करें; यदि आप एक डबल चाहते हैं, तो floor का उपयोग करें।

उदाहरण के लिए, यदि आप मूल्य के कोसाइन प्राप्त करना चाहते हैं, तो आपको floor का उपयोग cos के रूप में करना चाहिए।

लेकिन यदि आप exit (केवल एक यादृच्छिक एपीआई चुनना) के लिए मान का उपयोग करना चाहते हैं, तो आपको डालना चाहिए क्योंकि exit एक int लेता है।

1

पूर्व में आपके फ्लोट वैल्यू को पूर्णांक के रूप में रखा गया है (और आप printf कॉल में एक int विनिर्देशक का उपयोग कर रहे हैं)।

उत्तरार्द्ध फर्श (सी गणित lib से) का उपयोग करता है ताकि गोलाकार हो गया हो।

+4

'Math.floor 'सी –

+2

में नहीं है ठीक है, हाँ, आप तकनीकी रूप से सही हैं। "Math.floor" सी में नहीं है। मुझे लगता है कि आप जानते हैं कि मेरा क्या मतलब है। मेरा संपादन जांचें। – bdl

+2

हाँ, मैंने किया। क्षमा करें अगर मैं एक झटका के रूप में आया था। यह जगह लोगों को एक स्व-धार्मिक रूप से बदलती है ... –

3

जब आपको floor डबल मिलता है, तो "पूर्णांक" doubleint प्रकार के चर में प्रतिनिधित्व योग्य नहीं हो सकता है या नहीं।

5

floor(n)n के गणितीय मंजिल देता है, वह यह है कि, सबसे बड़ी पूर्णांक n से अधिक नहीं। (int)nn का छंटनी देता है, पूर्णांक जिसका पूर्ण मूल्यn से अधिक नहीं है। इसी प्रकार, ceil(n)n की गणितीय छत लौटाता है, या सबसे छोटा पूर्णांक n से छोटा नहीं है। जैसा कि अरक ने बताया, floor() या ceil() द्वारा लौटाई गई संख्या int की सीमा के भीतर फिट नहीं हो सकती है।

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