9

फेंक दिया गया हो। मैंने विजुअल स्टूडियो को _controlfp फ़ंक्शन के माध्यम से फ़्लोटिंग पॉइंट अपवादों को फेंकने के लिए कॉन्फ़िगर किया है। यह एनएएन और आईएनएफ के लिए काम करता है, लेकिन क्यूएनएएन नहीं। अर्थात। चुपचाप NaNs उठाए जाने के लिए अपवाद का कारण नहीं है। क्या विजुअल स्टूडियो 2008/2010 के लिए कोई फ़ंक्शन, या कॉन्फ़िगरेशन विकल्प है, जो क्यूएनएएन को इसके बजाय एनएएनएस को मजबूर करेगा, ताकि वे अपवाद फेंक दें?सभी QNaN को सामान्य रूप से सामान्य NaN (SNaN) के लिए मजबूर करें ताकि अपवादों को

+0

मैं इस सवाल का जवाब होने की उम्मीद 'नहीं' लेकिन मुझे बहुत दिलचस्पी है। –

+1

एक और उत्तर आपको उपयोगी मिल सकता है: http://stackoverflow.com/questions/2769814/how-do-i-use-try-catch-to-catch-floating-point-errors/2769889#2769889 – George

+0

@ जॉर्ज: धन्यवाद , यह वास्तव में उपयोगी था – Dave

उत्तर

1

कुछ उपयोगी सुझाव है, हालांकि मैं कभी नहीं भी दूर से कुछ इस तरह किया है:

पढ़ें: http://www.cisl.ucar.edu/docs/trap.error/errortypes.html

इंटरनेट पर जिसके परिणामस्वरूप खोज (जो मैं वास्तव में केवल पर के बारे में 30 सेकंड खर्च किया है) , मुझे विश्वास दिलाता है कि यह आमतौर पर एक कंपाइलर विकल्प के साथ सक्षम है।

हालांकि, मुझे यह भी याद है कि जाल की इस तरह की सक्षम/अक्षम करने को प्रोग्रामेटिक रूप से निर्दिष्ट किया जा सकता है, और विशेष रूप से विंडोज़ में, यह किसी भी प्रोग्राम द्वारा किया जा सकता है, जैसे प्रिंटिंग के लिए प्रिंटर का उपयोग किया जाता है। इसके अतिरिक्त, यदि आप इस विकल्प को प्रोग्रामेटिक रूप से बदलते हैं, तो कृपया इसे जितनी जल्दी हो सके पिछले मान पर सेट करें, अन्यथा यदि .NET के लोग आपके कोड का उपयोग करने का प्रयास करते हैं, तो उन्हें समस्या हो सकती है।

(दूसरे शब्दों में, _controlfp के आपके उपयोग, कुछ अन्य दिनचर्या द्वारा ओवरराइड किया जा सकता है यह सोचते हैं कि वास्तव में उपयोग करने के लिए सही दृष्टिकोण है)

भी देखें Visual Studio C++ 2008/2010 - break on float NaN