में एक वैध फ़्लोटिंग पॉइंट नंबर यह printf
के साथ एक प्रसिद्ध मुद्दा है। चूंकि आप एक फ्लोटिंग पॉइंट नंबर का उपयोग कर रहे हैं, बाइनरी में कोई भी प्रतिनिधित्व संभव नहीं है। और अधिकांश बार द्विआधारी प्रतिनिधित्व सही नहीं है। इसलिए, 0 को कभी-कभी 0.00000000000000...0042
और -0.000000000000000000000123
के रूप में संग्रहीत किया जाता है। जब printf दूसरे को प्रिंट करता है, तो आपको विषम -0 मिल जाता है।
मुझे वास्तव में पता नहीं है कि आप 0 के खिलाफ तुलना कैसे कर रहे हैं, बस विषमता के समायोजन के लिए फ़्लोटिंग पॉइंट तुलना करते समय एक ईपीएसलॉन जोड़ना याद रखें। E.g: परीक्षण करने के लिए कि क्या दो फ्लोट बराबर हैं a == b
लिखें लेकिन fabs(a-b) < 1e-13
जहां 1e-13 ईपीएसलॉन है (एक एक्सपोनेंट चुनें जो आपको उपयुक्त बनाता है)।
मैं जोड़ा कैसे मैं तुलना – hhafez
किया आपको लगता है कि gdb printf है के लिए यह प्रिंट बयान है? – hhafez
हाँ, वे सभी प्रोग्राम एक ही libc का उपयोग करते हैं। – dirkgently