सी में, इन दोनों के बीच क्या अंतर है?सी: (int) x और floor (x) के बीच अंतर?
float myF = 5.6;
printf("%i \n", (int)myF); // gives me "5"
printf("%ld \n", floor(myF)); // also "5"?
दूसरे पर एक बेहतर कब होता है?
सी में, इन दोनों के बीच क्या अंतर है?सी: (int) x और floor (x) के बीच अंतर?
float myF = 5.6;
printf("%i \n", (int)myF); // gives me "5"
printf("%ld \n", floor(myF)); // also "5"?
दूसरे पर एक बेहतर कब होता है?
नकारात्मक अंतर की एक बड़ी अंतर है; यदि आप myF
से -5.6
बदलते हैं, तो एक इंट रिटर्न -5
पर कास्टिंग करते हैं जबकि floor(myF)
-6
है।
के रूप में जो बेहतर है, एक सामान्य नियम के मैं एक पूर्णांक के लिए एक ही कलाकारों को कहेंगे यदि आप जानते हैं है कि आप क्या जरूरत के रूप में करने के लिए - और जब से तुम यहाँ पूछ रहे हैं, संभावना है कि आप शायद चाहते हैं floor
।
(भी ध्यान रखें कि printf
स्वरूपण के साथ, %ld
एक लंबे पूर्णांक है, और एक डबल %lf
है।)
क्या आप परिणाम को पूर्णांक या डबल के रूप में चाहते हैं?
यदि आप एक पूर्णांक चाहते हैं, कास्ट करें; यदि आप एक डबल चाहते हैं, तो floor
का उपयोग करें।
उदाहरण के लिए, यदि आप मूल्य के कोसाइन प्राप्त करना चाहते हैं, तो आपको floor
का उपयोग cos
के रूप में करना चाहिए।
लेकिन यदि आप exit
(केवल एक यादृच्छिक एपीआई चुनना) के लिए मान का उपयोग करना चाहते हैं, तो आपको डालना चाहिए क्योंकि exit
एक int लेता है।
पूर्व में आपके फ्लोट वैल्यू को पूर्णांक के रूप में रखा गया है (और आप printf कॉल में एक int विनिर्देशक का उपयोग कर रहे हैं)।
उत्तरार्द्ध फर्श (सी गणित lib से) का उपयोग करता है ताकि गोलाकार हो गया हो।
'Math.floor 'सी –
में नहीं है ठीक है, हाँ, आप तकनीकी रूप से सही हैं। "Math.floor" सी में नहीं है। मुझे लगता है कि आप जानते हैं कि मेरा क्या मतलब है। मेरा संपादन जांचें। – bdl
हाँ, मैंने किया। क्षमा करें अगर मैं एक झटका के रूप में आया था। यह जगह लोगों को एक स्व-धार्मिक रूप से बदलती है ... –
जब आपको floor
डबल मिलता है, तो "पूर्णांक" double
int
प्रकार के चर में प्रतिनिधित्व योग्य नहीं हो सकता है या नहीं।
floor(n)
n
के गणितीय मंजिल देता है, वह यह है कि, सबसे बड़ी पूर्णांक n
से अधिक नहीं। (int)n
n
का छंटनी देता है, पूर्णांक जिसका पूर्ण मूल्यn
से अधिक नहीं है। इसी प्रकार, ceil(n)
n
की गणितीय छत लौटाता है, या सबसे छोटा पूर्णांक n
से छोटा नहीं है। जैसा कि अरक ने बताया, floor()
या ceil()
द्वारा लौटाई गई संख्या int
की सीमा के भीतर फिट नहीं हो सकती है।
'मंजिल (-5.5)' – tzenes
का प्रयास करें [कास्ट टू इंट बनाम फर्श] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/3300290/cast-to-int-vs-floor) – STF