2011-09-05 8 views
21

के लिए जांचें क्या कोई यह जांचने के लिए विधि को जानता है कि एक डबल (या पूर्णांक) अनंत है, उदाहरण के लिए जब 1/0 ऑपरेशन किया जाता है?inf-purpose c

isfinite (n) काम नहीं कर रहा है।

+7

एक पूर्णांक अनंत नहीं हो सकता है। –

+0

आप 'x * 2 == x && x! = 0' या ऐसा कुछ परीक्षण कर सकते हैं ... NaN के लिए आप' x! = X' का परीक्षण कर सकते हैं। –

+2

क्या आप स्पष्ट कर सकते हैं कि "isfinite() 'का मतलब आपके काम से प्रतीत नहीं होता है।" –

उत्तर

36

आप जाँच कर सकते हैं

if(d == INFINITY) {} 

या

if(d > DBL_MAX) {} 

INFINITY एक निरंतर नाव math.h में परिभाषित अभिव्यक्ति सकारात्मक अनंत का प्रतिनिधित्व करता है;
DBL_MAXfloat.h में लगातार परिभाषित किया गया है जो कि सबसे बड़ा डबल दर्शाया जा सकता है।

#define isinf(x) \ 
     ( sizeof (x) == sizeof(float) ? __isinff((float)(x)) \ 
     : sizeof (x) == sizeof(double) ? __isinfd((double)(x)) \ 
              : __isinf ((long double)(x))) 

मैक्रो:

भी चेक here

+0

आपको शायद यह वर्णन करना चाहिए कि यह प्रतीक उपयोगी होने के लिए कहां से आए हैं। –

+0

यदि (डी == इन्फिनिटी) एक इलाज करता है, धन्यवाद – John67

+1

@ केरेक एसबी: गायब सूचनाएं – Saphrosit

17

<math.h> किसी मैक्रो, isinf, अपने तर्क के आकार की जांच और उसके बाद प्रकार के लिए उपयुक्त __isinf समारोह कॉल करने के लिए परिभाषित किया गया है वास्तुकला/i386/math.h में समान है और वास्तुकला/हाथ/math.h; कार्यों के कार्यान्वयन खुद को काफी अलग हैं।

यह नकारात्मक अनन्तता के लिए सच के साथ ही सकारात्मक वापस आ जाएगी, तो आप ऐसी बात मुठभेड़ का क्या किया जाए:

2011-10-26 18: 41: 53.424 ToInfinityEtc [30,197: 903] हाँ सचमुच!
2011-10-26 18: 41: 53.426 ToInfinityEtc [30197: 903] आप betcha!

+0

लेकिन isinf केवल जीएनयू कंपाइलर के लिए है। llvm के साथ संगत नहीं है। एक्सकोड कहता है "अज्ञात पहचानकर्ता isinf का उपयोग" हालांकि ध्वज + cmath पर नेविगेट क्लिक करें। मैंने मैन्युअल रूप से math.h आयात किया। लेकिन अभी भी cmath पर नेविगेट करता है और हां इस त्रुटि के कारण संकलित नहीं हो सकता है "अविकसित पहचानकर्ता isinf का उपयोग"। अंत में मैंने अब संकलित isinf के बजाय std :: isinf को बदल दिया। –

+1

math.h और 'isinf()' [POSIX मानक दोनों का हिस्सा हैं] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html), @ एन।रामोस। उनके पास जीसीसी के साथ कुछ लेना देना नहीं है। आपको कहीं और समस्या है। –