सी में, पूर्णांक विभाजन ए/बी और मंजिल (ए/बी) के बीच कोई अंतर है जहां ए और बी दोनों पूर्णांक हैं? अधिक विशेष रूप से दोनों प्रक्रियाओं के दौरान क्या होता है?सी पूर्णांक विभाजन और मंजिल
उत्तर
a/b
पूर्णांक विभाजन करता है। यदि a
या b
ऋणात्मक है, तो परिणाम संकलक पर निर्भर करता है (गोलिंग शून्य की ओर जा सकती है या पूर्व-सी 99 में नकारात्मक अनंतता की ओर जा सकती है; सी 99 + में, गोलाकार 0 की तरफ जाता है)। परिणाम int
टाइप किया गया है। floor(a/b)
एक ही विभाजन करता है, परिणाम को दोहराता है, (nonexistent) fractional भाग को छोड़ देता है, और परिणाम को दोहरा देता है।
floor
रिटर्न एक double
जबकि a/b
जहां दोनों a
और b
हैं पूर्णांकों पैदावार एक पूर्णांक मूल्य।
सही कास्ट के साथ मान समान है।
तो typeof
ऑपरेटर सी में ही अस्तित्व में (यह नहीं है) हम होगा:
(typeof (a /b)) floor(a/b) == a/b
संपादित करें: अब अगर सवाल यह है:
(double) (a/b)
और: वहाँ के बीच कोई अंतर है
floor(a/(double) b)
उत्तर हाँ है। नकारात्मक मूल्यों के संबंध में परिणाम अलग-अलग हैं।
पूर्णांक से फ़्लोटिंग पॉइंट में कनवर्ट करने की जानकारी खोना संभव है। पूर्णांक और डबल के साथ होने की संभावना नहीं है, लेकिन थोड़ा-बहुत बदलाव के साथ:
#include <stdio.h>
#include <math.h>
int main(void)
{
unsigned long long a = 9000000000000000003;
unsigned long long b = 3;
printf("a/b = %llu\n", a/b);
printf("floor(a/b) = %f\n", floor(a/b));
return 0;
}
परिणाम:
a/b = 3000000000000000001
floor(a/b) = 3000000000000000000.000000
एक डबल सभी 32 बिट पूर्णांक मानों को बिल्कुल स्टोर कर सकता है। आप int के बजाय हमेशा डबल का उपयोग कर सकते हैं। यह सटीक खोने की संभावना नहीं है, यह असंभव है। आपका उदाहरण सही है, लेकिन उन लोगों को गुमराह करना जो अभी तक समस्या को नहीं समझते हैं। – maxy
सामान्य तौर पर, यह सोचते हैं कि पूर्णांकों दोनों पूर्णांक में प्रदर्शनीय कर रहे हैं और फ्लोटिंग प्वाइंट प्रकार, वहाँ isn एक अंतर नहीं है, लेकिन सबूत स्पष्ट नहीं है। समस्या यह है कि फ्लोटिंग-पॉइंट में, विभाजन ए/बी में एक गोलाकार होता है, ताकि फर्श फ़ंक्शन सटीक तर्कसंगत मान पर लागू न हो, लेकिन अनुमानित मूल्य पर। मैंने विषय पर एक पेपर लिखा था: https://www.vinc17.net/research/publi.html#Lef2005b
संक्षेप में, परिणाम प्राप्त हुआ है कि अगर ए - बी फ्लोटिंग-पॉइंट सिस्टम में बिल्कुल प्रतिनिधित्व करने योग्य है, तो फर्श (ए/बी), जहां एक और बी फ़्लोटिंग-पॉइंट नंबर (पूर्णांक मानों के साथ) हैं, एक ही परिणाम को पूर्णांक विभाजन ए/बी के रूप में देता है।
- 1. सी ++ पूर्णांक विभाजन और शेष
- 2. पूर्णांक विभाजन का व्यवहार क्या है?
- 3. पूर्णांक विभाजन हमेशा शून्य
- 4. बैश पूर्णांक विभाजन
- 5. पूर्णांक विभाजन गुण
- 6. फ्लोट पूर्णांक विभाजन
- 7. सी # विभाजन और विलय?
- 8. पूर्णांक विभाजन के साथ दौर
- 9. फूट डालो पूर्णांक और पूर्णांक मान प्राप्त
- 10. सी ++ पूर्णांक फर्श फ़ंक्शन
- 11. x86 प्रोसेसर का पूर्णांक विभाजन एल्गोरिदम
- 12. सी # पूर्णांक, Int32 और enums
- 13. सी स्ट्रिंग और पूर्णांक संयोजन
- 14. एक पूर्णांक विभाजन में भिन्नता कैसे प्राप्त करें?
- 15. विभाजन गलती सी
- 16. विभाजन गलती समस्या (सी)
- 17. सी ++ विभाजन 0
- 18. सी ++ - विभाजन का प्रकार?
- 19. छवि विभाजन - विभाजन और विलय (Quadtrees)
- 20. 'पूर्णांक और'
- 21. अजीब विभाजन
- 22. पूर्णांक गुणा में ओवरफ्लो से बचने के बाद विभाजन
- 23. पूर्णांक विभाजन कोड गलत जवाब क्यों देता है?
- 24. PHP में मूल पूर्णांक विभाजन विफल रहा है - मैं अनजान
- 25. जावा में दो पूर्णांक का विभाजन 0.0 क्यों देता है?
- 26. किसी भी पूर्णांक के गुणात्मक विभाजन कैसे प्राप्त करें?
- 27. विभाजन और अद्यतन
- 28. डेटाबेस शेडिंग और विभाजन
- 29. jQuery विभाजन() और
- 30. माइस्क्ल, हैंडलरकेट और विभाजन?
सी पूर्णांक विभाजन शून्य की ओर छंटनी करता है। कार्यान्वयन-परिभाषित होने से पहले यह सी 99 के बाद से सच है। – ouah
आह, 'सी' टैग से चूक गया। फिर भी, यह स्पष्ट है कि मेरा जवाब सी ++ के बारे में है। '' –
@ मिस्टिकियल बिंदु यह है कि 'मंजिल' इस उदाहरण में कुछ भी नहीं है क्योंकि 'ए/बी' पूर्णांक विभाजन करता है और * फिर * इसे 'मंजिल' तक भेजता है। – oldrinb