1. परिचय
C भाषा मा NaN को अर्थ र महत्व
C भाषा मा,ोटिंग पोइन्ट संख्याहरूलाई ह्यान्डल गर्दा टाढा नजाने कुरा “NaN(Not a Number)” को अस्तित्व हो। यो जापानीमा “非数” (असंख्य) भनेर अनुवाद हुने विशेष संख्या हो, जसलाई संख्यात्मक रूपमा ह्यान्डल गर्न नसक्ने परिणाम दर्शाउन प्रयोग गरिन्छ। उदाहरणका लागि, शून्यले भाग गर्दा वा नकारात्मक संख्याको वर्गमूल गणना गर्दा, गणितीय रूपमा परिभाषित गर्न नसक्ने प्रक्रियाको परिणामस्वरूप NaN फिर्ता हुन्छ।
किन NaN लाई बुझ्न आवश्यक छ?
प्रोग्रामिङमा NaN को अस्तित्वलाई सही रूपमा नबुझ्दा, अनपेक्षित त्रुटिहरूको कारण बन्न सक्छ। विशेष गरी C भाषा मा, NaN समावेश गर्ने चलकहरूसँग तुलना वा गणनामा अनपेक्षित व्यवहार देखिन सक्छ, त्यसैले यसको गुणलाई राम्ररी बुझ्न र उपयुक्त रूपमा ह्यान्डल गर्न आवश्यक छ।
त्यसै गरी, डेटा प्रोसेसिङ वा संख्यात्मक विश्लेषण गर्ने प्रोग्रामहरूमा, असामान्य मान वा हराइरहेका मानहरूलाई NaN को रूपमा दर्शाएर, डेटाको वैधता कायम राख्दै प्रक्रिया जारी राख्न सकिन्छ। त्यसैले, NaN को अर्थ र प्रयोग सिक्नु केवल त्रुटि ह्यान्डलिङसम्म सीमित नभई, बलियो सफ्टवेयर विकाससँग प्रत्यक्ष सम्बन्धित महत्वपूर्ण ज्ञान हो।
यस लेखको उद्देश्य
यस लेखमा, C भाषा मा NaN को परिभाषा, निर्माण विधि, पहिचान विधि, वास्तविक प्रयोगका उदाहरणहरू, साथै NaN सँग सम्बन्धित ध्यान दिनुपर्ने बुँदाहरूलाई समग्र रूपमा व्याख्या गर्नेछ। फ्लोटिंग पोइन्ट संख्याहरूलाई ह्यान्डल गर्दा आवश्यक पर्ने यो ज्ञानलाई, शुरुआतीदेखि मध्यवर्ती स्तरसम्म सजिलै बुझ्न सकिने गरी संरचना गरिएको छ।
2. NaN के हो?
NaN (Not a Number) को मूल परिभाषा
NaN भनेको, “Not a Number(संख्या होइन)” को संक्षिप्त रूप हो, र संख्यात्मक प्रकारको डेटा भित्र समावेश हुनेविशेष मान मध्ये एक हो। नामजस्तै, संख्याको रूपमा अर्थ नलिने डेटा दर्शाउँछ। यो त्रुटि होइन, “संख्याको रूपमा ह्यान्डल गर्न नसक्ने गणनात्मक परिणाम” लाई स्पष्ट रूपमा व्यक्त गर्ने मेकानिज्म हो।
उदाहरणका लागि, तलको जस्तो गणनात्मक परिणाम गणितीय रूपमा परिभाषित गर्न सकिँदैन:
- 0.0 / 0.0 (शून्य विभाजन)
- sqrt(-1.0) (ऋणात्मक मानको वर्गमूल)
- log(-5.0) (नकारात्मक मानको लघुगणक)
यस्ता अवस्थामा, C Gengo को मानक पुस्तकालय प्रयोग गर्दा, फर्काइने मानको रूपमा NaN प्राप्त हुन्छ जसले “यो गणनात्मक परिणाम संख्याको रूपमा अर्थ राख्दैन” भन्ने देखाउँछ।
IEEE 754 मा NaN को स्थिति
C Gengo को फ्लोटिङ पोइन्ट संख्या(float
र double
)लाई, IEEE 754 नामक अन्तर्राष्ट्रिय मानकको आधारमा डिजाइन गरिएको छ। यस मानकले, संख्याको दायरा भन्दा बाहिरको परिणाम वा अवैध गणनात्मक परिणामलाई व्यक्त गर्न, विशेष बिट प्याटर्नको रूपमा NaN लाई परिभाषित गर्दछ।
IEEE 754 मा, NaN लाई मुख्यतया तलका 2 प्रकारमा विभाजन गरिएको छ:
- quiet NaN(qNaN):अधिकांश वातावरणमा सामान्यतया प्रयोग गरिने NaN। गणनाको समयमा त्रुटि नउत्पन्न गरेर, NaN को रूपमा प्रक्रिया गरिन्छ।
- signaling NaN(sNaN)यो मूलतः अपवाद प्रबन्धनलाई ट्रिगर गर्नको लागि अवस्थित छ, तर C भाषामा धेरै कार्यान्वयनहरूले यसलाई समर्थन गर्दैनन्।
C Gengo मा प्रयोग हुने धेरै NaN हरू मध्ये, यो quiet NaN हो।
NaN को प्रसारण विशेषता
NaN ले, अन्य मानहरूसँगको गणनामा समावेश भएमा, त्यसको परिणाम पनि मूलतः NaN बनिन्छ। यो “NaN समावेश गर्ने परिणाम विश्वसनीय छैन” भन्ने विचारमा आधारित छ।
#include
#include
int main() {
double a = 0.0 / 0.0; // NaN
double b = a + 100.0; // यो पनि NaN
printf("%f
", b); // प्रदर्शित परिणाम: nan
return 0;
}
यसरी, एक पटक NaN उत्पन्न भएमा, श्रृंखलाबद्ध रूपमा NaN प्रसारित हुन्छ, त्यसैले NaN को पहिचान र प्रक्रिया महत्त्वपूर्ण हुन्छ।
3. C भाषा मा NaN को निर्माण विधि
<math.h>
द्वारा NaN को निर्माण
C भाषामा, फ्लोटिङ पोइन्ट संख्याको विशेष मान NaN सिर्जना गर्नका लागि, मानक पुस्तकालय मा परिभाषित कार्यहरू प्रयोग गर्नु सामान्य हो। प्रतिनिधि कार्यहरू तलका जस्तै छन्:
nan(const char *tagp)
nanf(const char *tagp)
nanl(const char *tagp)
यी कार्यहरूले क्रमशः double
, float
, long double
प्रकारको NaN मान फिर्ता गर्छन्।
#include
#include
int main() {
double x = nan("");
printf("%f
", x); // आउटपुट: nan
return 0;
}
tagp
प्यारामिटरको अर्थ
यी कार्यहरूलाई पास गरिने tagp
प्यारामिटर NaN मा ट्याग जानकारी निर्दिष्ट गर्नको लागि हो, जसलाई डिबग वा निदान प्रयोजनमा प्रयोग गर्न सकिन्छ। तर, वास्तविक व्यवहार वा समर्थनको उपलब्धता कार्यान्वयन (कम्पाइलर वा पुस्तकालय) मा निर्भर हुन्छ, त्यसैले सामान्यतया खाली स्ट्रिङ ""
निर्दिष्ट गर्नु सामान्य हो।
double y = nan("payload");
यस्तो रूपमा निर्दिष्ट गर्दा पनि, उत्पादन हुने NaN मा लगभग कुनै फरक हुँदैन, ट्याग स्पष्ट रूपमा देखिने प्रकारको व्यवहार दुर्लभ हुन्छ। पोर्टेबिलिटीलाई महत्व दिनुहुन्छ भने, ""
प्रयोग गर्नु सुरक्षित हुन्छ।
कार्य कल बाहेक NaN सिर्जना गर्ने विधि
केही केसहरूमा, स्पष्ट रूपमा NaN फिर्ता गर्ने अभिव्यक्ति प्रयोग गरेर NaN सिर्जना गर्न सम्भव छ। उदाहरणका लागि तल जस्तै, 0.0 लाई 0.0 ले भाग गर्दा NaN उत्पन्न हुन्छ।
double nan_val = 0.0 / 0.0;
तर, यस्तो विधि चलाउने समयमा त्रुटि वा अपरिभाषित व्यवहार हुन सक्छ, त्यसैले वास्तविक प्रयोगमा nan("")
जस्ता कार्य प्रयोग गरेर स्पष्ट रूपमा सिर्जना गर्ने विधि सिफारिस गरिन्छ।
कम्पाइलर-निर्भर सावधानीहरू
NaN को निर्माण र व्यवहार C भाषाको मानकलाई पालना गर्दा पनि, वातावरण अनुसार थोरै भिन्नता हुन सक्छ। विशेष गरी एम्बेडेड विकास जस्ता, फ्लोटिङ पोइन्ट गणना विशेष रूपमा ह्यान्डल गरिने वातावरणहरूमा, NaN सही रूपमा ह्यान्डल नहुन सक्छ, त्यसैले परीक्षण वातावरणमा व्यवहार जाँच महत्त्वपूर्ण छ।
4. NaN को प्रकार र विशेषताहरू
quiet NaN(qNaN) र signaling NaN(sNaN) को भिन्नता
NaN मा, quiet NaN(qNaN) र signaling NaN(sNaN) का दुई प्रकार छन्। दुवै “गैर‑संख्या” अर्थ दिने विशेष मानहरू हुन्, तर तिनीहरूको प्रयोग र व्यवहारमा स्पष्ट भिन्नता छ।
quiet NaN(qNaN)
quiet NaN C gengo मा सबैभन्दा सामान्य रूपमा प्रयोग हुने NaN रूप हो। नामजस्तै “शान्त NaN” हो, र कार्यक्रम चलिरहेको बेला कुनै सूचना नदिई, चुपचाप गणना प्रक्रिया जारी राख्छ।
उदाहरणका लागि, तलको कोडले उत्पन्न गर्ने NaN qNaN हो:
#include
double x = nan("");
यो qNaN असामान्य गणना भएको संकेतलाई संख्यात्मक रूपमा देखाउने भूमिका खेल्छ, तर अपवाद उत्पन्न नगरी वा कार्यक्रम रोक्दैन।
signaling NaN(sNaN)
signaling NaN गणनामा प्रयोग गर्दा उदाहरण(Floating-Point Exception) अपवाद उत्पन्न गर्न सक्ने NaN हो। मूलतः डिबगिङ वा विकास क्रममा त्रुटि पत्ता लगाउन प्रयोग गरिने उद्देश्यले बनाइएको हो।
तर, C gengo मानक पुस्तकालय र धेरै कार्यान्वयनहरू (GCC वा Clang आदि) मा, sNaN को स्पष्ट निर्माण वा ह्यान्डलिङलाई समर्थन नगर्न सक्छन्, वा यसलाई qNaN को रूपमा प्रक्रिया गरिन्छ। sNaN मुख्यतया हार्डवेयर स्तरको नियन्त्रणसँग सम्बन्धित हुन्छ, र असेंब्ली वा कम स्तरको फ्लोटिङ‑प्वाइन्ट गणना नियन्त्रण जस्ता अवस्थामा देखा पर्छ।
NaN को बिट ढाँचा र पहिचान
IEEE 754 अनुरूप C gengo वातावरणमा, NaN विशेष बिट ढाँचाद्वारा प्रतिनिधित्व गरिन्छ। उदाहरणका लागि, 64‑बिटको double
प्रकारमा, यदि घातांक भाग सबै 1 र मान भाग शून्य नभएमा, NaN को रूपमा मानिन्छ।
साइन बिट 1bit | घातांक भाग 11bit(सबै 1) | भिन्न भाग 52bit(शून्य नभएको)
यो बिट संरचनाद्वारा, कम्पाइलर वा CPU ले NaN हो कि होइन निर्धारण गरी, उपयुक्त व्यवहार(प्रसारण, परिहार, चेतावनी) कार्यान्वयन गर्न सक्छ।
NaN को व्यवहार:पूर्वानुमान गर्न कठिन तुलना र गणना
NaN सँग, संख्याबाट भिन्न विशेष गुणहरू छन्, विशेष गरी तुलना गणनामा सावधानी आवश्यक हुन्छ।
double x = nan("");
if (x == x) {
printf("बराबर
");
} else {
printf("बराबर छैन
");
}
// परिणाम: बराबर छैन
यसरी, NaN ले आफैँसँग पनि बराबर नहुनु भन्ने विशेषता भएको कारण, सामान्य तुलना गणनामा यसलाई ह्यान्डल गर्न कठिन हुन्छ। यो गुणले NaN को अस्तित्व पत्ता लगाउन उपयोगी भएता पनि, बगको कारण पनि बन्न सक्छ।
5. NaN को निर्धारण विधि
NaN सामान्य तुलना द्वारा निर्धारण गर्न सकिँदैन
को सबैभन्दा अनौठो गुणहरू मध्ये एक हो, 「NaN कुनै पनि चीजसँग बराबर हुँदैन」 भन्ने बुँदा हो। यसले, 「आफैंसँगको तुलना पनि स्थापित हुँदैन」 भन्ने अत्यन्तै विशेषता राख्छ, र सामान्य 「==
」 अपरेटर प्रयोग गरेर पनि NaN को निर्धारण गर्न सकिँदैन।
#include
#include
int main() {
double x = nan("");
if (x == x) {
// सामान्य संख्याहरूमा true हुन्छ, तर
// NaN को अवस्थामा false हुन्छ
}
}
यस कारण, संख्यात्मक समानता जाँच गर्ने कोडमा NaN मिश्रित भएमा, अपेक्षित नभएको शाखा सहजै उत्पन्न हुन्छ। विशेष गरी जटिल if कथनहरू वा लूपहरूमा प्रयोग गर्दा, बगको उत्पत्ति बन्न सक्छ।
isnan()
कार्यको प्रयोग
C भाषामा, फ्लोटिङ पोइन्ट संख्या NaN हो कि होइन निर्धारण गर्न, मानक पुस्तकालय मा परिभाषित गरिएको
isnan()
कार्यलाई प्रयोग गरिन्छ।
#include
#include
int main() {
double x = 0.0 / 0.0; // NaN
if (isnan(x)) {
printf("x NaN हो
");
} else {
printf("x संख्या हो
");
}
return 0;
}
यो कार्यले, यदि आर्गुमेन्ट NaN भएमा सत्य (शून्य बाहेक) र नत्र असत्य (0) फिर्ता गर्दछ।

विभिन्न डेटा प्रकारहरूमा समर्थन
isnan()
double प्रकारको लागि कार्य हो, तर समान म्याक्रोको रूपमा तलका कार्यहरू पनि उपलब्ध छन् (पर्यावरण अनुसार प्रयोग नहुन सक्छ, त्यसैले सावधानी आवश्यक छ):
isnanf()
:float
प्रकारसँग अनुकूलisnanl()
:long double
प्रकारको समर्थन
निर्धारण गर्दा ध्यान दिनुपर्ने बुँदाहरू
NaN प्रायः “अदृश्य बग” को कारण बन्छ, विशेष गरी तलका केसहरूमा ध्यान दिनु आवश्यक छ।
- अप्रारम्भित चरयदि तपाईंले फ्लोटिङ् प्वाइन्ट गणना गर्नुहुन्छ भने, NaN बन्ने सम्भावना हुन्छ।
- बाह्य पुस्तकालयरइनपुट/आउटपुटप्रक्रियामा NaN मिस हुन सक्छ।
- तुलना प्रक्रियामा अनपेक्षित परिणाम आएको बेला, पहिलो पटक NaN को सम्भावनालाई शंका गर्नुहोस्।
NaN पत्ता लगाउने उत्तम अभ्यास
- जटिल गणनात्मक प्रक्रियाको पछि
isnan()
यस चरणमा पुष्टि थप्नुहोस् - डिबगिङ गर्दा
printf("%f", x)
जस्तै … मा प्रदर्शन गर्दा 「nan
「…को रूपमा आउटपुट हुन्छ कि छैन जाँच गर्नुहोस्」 - डेटा भर्ने भेरिएबलमाप्रारम्भिक मान स्पष्ट गर्नुहोस्NaN लाई जानबुझेर प्रयोग गर्ने अवस्थाहरूमा पनि टिप्पणी राख्नुहोस्।
6. NaN को प्रयोग उदाहरण
असामान्य मान‑अभाव मानको अभिव्यक्तिको रूपमा NaN
C भाषा प्रयोग गरेर संख्यात्मक गणनामा,NaN असामान्य मान वा अभाव मानको “फ्ल्याग” को रूपमा कार्य गर्दछ। उदाहरणका लागि, सेन्सर डेटा वा प्रयोगकर्ता इनपुट आदि, सबै संख्याहरू सही रूपमा प्राप्त हुने निश्चित छैनन्। यस्तो अवस्थामा सामान्य संख्याको सट्टा NaN प्रविष्ट गरेर「यो मान वैध छैन」 भनेर स्पष्ट गर्न सकिन्छ।
double temperature = isnan(sensor_reading) ? nan("") : sensor_reading;
@@
यसरी, NaN प्रयोग गरेर, प्रक्रिया रोकिएन, र पछिल्लो चरणमा असामान्य मानहरू मात्र पत्ता लगाएर हटाउन सकिन्छ।
गणनाको मध्यवर्ती त्रुटि पत्ता लगाउनको लागि NaN
प्रोग्रामभित्रको संख्यात्मक गणनामा, मध्यमा अनपेक्षित गणना(शून्यले भाग गर्ने वा नकारात्मक वर्गमूल जस्ता)भए पनि, तुरुन्तै क्र्यास नगरी, NaN फिर्ता गरेर गणना जारी राख्न सकिन्छ। यसले असामान्य डेटा कहाँ उत्पन्न भयो भनेर पछि ट्र्याक गर्न सक्ने फाइदा दिन्छ।
#include
double safe_divide(double a, double b) {
if (b == 0.0) {
return nan(""); // त्रुटि भए पनि प्रक्रिया जारी रहन्छ
}
return a / b;
}
@@
यस प्रकारको कोड, उच्च विश्वसनीयता भएको संख्यात्मक प्रक्रिया प्रोग्रामको मूल संरचना बनिन्छ।
डेटा विश्लेषण‑सांख्यिकीय गणनामा NaN को प्रयोग
सांख्यिकीय प्रक्रियामा, डेटा अभाव(missing value)लाई NaN को रूपमा ह्यान्डल गर्ने प्रचलन धेरै छ। C भाषा आफैंमा सांख्यिकीय लाइब्रेरी मानक रूपमा उपलब्ध छैन, तर NaN प्रयोग गरेर सांख्यिकीय प्रक्रियाको आधार लाइब्रेरी विकास र डेटा प्रोसेसिङ कार्यान्वयनमा महत्त्वपूर्ण छ।
तल NaN हटाएर औसत गणना गर्ने एक उदाहरण छ:
#include
double mean_without_nan(double *arr, int size) {
double sum = 0.0;
int count = 0;
for (int i = 0; i < size; i++) {
if (!isnan(arr[i])) {
sum += arr[i];
count++;
}
}
return (count == 0) ? nan("") : (sum / count);
}
@@
यसरी, NaN प्रयोग गरेर, 「गणनामा समावेश नगर्ने लचिलो प्रक्रिया」 सम्भव हुन्छ।
डिबगिङ प्रयोजनको लागि NaN को सम्मिलन
प्रोग्रामको कार्य परीक्षणको क्रममा, जानबुझी NaN राखेर,「यो मान पहुँचिएमा समस्या हुन्छ」 भन्ने संकेतको रूपमा प्रयोग गर्ने विधि पनि छ। यो परीक्षण चरणमा जानबुझी अवैध मान राखेर प्रणालीको प्रतिक्रिया हेर्ने「फॉल्ट इन्जेक्शन(त्रुटि इन्जेक्शन)」को एक भाग हो।
7. NaN सम्बन्धी ध्यान दिनुपर्ने बुँदा र जाल
तुलनात्मक अपरेसनमा भ्रम: NaN कुनै पनि मानसँग बराबर छैन
NaN को सबैभन्दा प्रमुख विशेषता हो, र सबैभन्दा धेरै भ्रम उत्पन्न गर्ने कुरा हो, 「NaN कुनै पनि चीजसँग बराबर हुँदैन」 भन्ने गुण हो। यो, 「आफैंसँगको तुलना पनि स्थापित हुँदैन」 भन्ने अत्यन्तै चरम गुण राख्छ, सामान्य 「==
」 अपरेटर प्रयोग गरेर पनि NaN को पहिचान गर्न सकिँदैन।
double x = nan("");
if (x == x) {
// सामान्य सङ्ख्या भएमा यो true हुन्छ, तर
// NaN को अवस्थामा false हुन्छ
}
यस कारण, संख्याको समानता जाँच गर्ने कोडमा NaN मिश्रित भएमा, अपेक्षित नभएको शाखा सहजै उत्पन्न हुन्छ। विशेष गरी जटिल if कथनहरू वा लूपहरूमा प्रयोग गर्दा, बगको उत्पत्ति बन्न सक्छ।
NaN समावेश गर्ने अपरेसनको परिणाम सबै NaN हुन्छ
NaN मा “संक्रमणशीलता” हुन्छ, र जुनसुकै संख्यासँग अपरेसन गर्दा मूलतः परिणाम NaN हुन्छ। उदाहरणका लागि तलका अपरेसनहरू सबै NaN फिर्ता गर्छन्।
double a = nan("");
double b = 100.0;
double result = a + b; // result भनेको NaN हो
यदि यो विशेषता नबुझी अपरेसन जारी राखियो भने, कार्यक्रमको पछिल्लो भागमा अचानक सबै मानहरू NaN भएका छन् जस्ता स्थिति उत्पन्न हुन सक्छ।
NaN मिश्रित भए पनि क्र्यास नहुनु उल्टो समस्या हो
NaN C भाषामा “अपवाद उत्पन्न नगर्ने” सामान्य हो। अर्थात, प्रोग्रामले असामान्य अपरेसन गरे पनि त्रुटि रूपमा पत्ता लाग्दैन, शान्त रूपमा कार्य जारी रहन्छ।
यस कारणले, नजानेकाले असामान्य मानहरूलाई ह्यान्डल गरिरहँदा, बग पत्ता लगाउन ढिलाइ हुने जालमा परिणत हुन्छ। उपायको रूपमा:
- प्रत्येक चरणमा
isnan()
… द्वारा जाँच थप्नुहोस् - परीक्षणको समयमा, हामी जानबुझेर NaN समावेश गर्ने डेटा दिन्छौं र व्यवहार जाँच गर्छौं।
जस्ता उपाय प्रभावकारी हुन्छ।
प्लेटफर्म र कम्पाइलर निर्भर व्यवहार
NaN को आन्तरिक बिट प्रतिनिधित्व IEEE 754 अनुरूप छ, तर विभिन्न प्लेटफर्म र कम्पाइलर अनुसार सूक्ष्म व्यवहार भिन्नता हुन सक्छ। विशेष गरी, तलका बुँदाहरूमा ध्यान दिनु आवश्यक छ:
nan("")
स्ट्रिङ्ग तर्क विश्लेषण गरिन्छ कि गरिँदैन (कुनै पटक उपेक्षा गरिन्छ)- printf को आउटपुट फर्म्याट (
nan
、NaN
、-nan
आदि) - sNaN प्रयोग गर्न सकिन्छ कि सकिँदैन (अनेक वातावरणमा समर्थन छैन)
त्यसैले, पोर्टेबिलिटीलाई महत्व दिने कोडमा NaN को ह्यान्डलिङमा ध्यान दिनुहोस्, विभिन्न वातावरणमा परीक्षण नगर्नु नहोस्।
8. सारांश
NaN लाई सही रूपमा बुझ्नको महत्व
NaN (Not a Number) भनेको C gengo मा फ्लोटिङ पोइन्ट गणनामा, संख्यात्मक अर्थ नलिने परिणाम देखाउने विशेष मान हो। शून्यले भाग गर्ने वा अवैध गणनाको परिणामस्वरूप देखिने NaN ले त्रुटि देखाएर प्रक्रिया रोक्ने होइन, “अवैध अवस्था उत्पन्न भएको” भन्ने जानकारीलाई संख्यात्मक रूपमा व्यक्त गर्ने मेकानिज्म हो।
यस्ता विशेषताहरू भएको NaN ले पहिलो नजरमा ह्यान्डल गर्न कठिन जस्तो लाग्न सक्छ, तर सही रूपमा बुझेर प्रयोग गर्दा कार्यक्रमको दृढता र लचीलापनलाई धेरै सुधार्न सम्भव हुन्छ।
यस लेखमा सिकेका बुँदाहरू
- NaN भनेको के हो? यो एक विशेष मान हो जुन सङ्ख्या रूपमा ह्यान्डल गर्न सकिँदैन।
- उत्पादन विधि:
nan("")
फङ्सन आदि प्रयोग गरेर स्पष्ट रूपमा उत्पन्न गर्न सकिन्छ। - प्रकार:quiet NaN र signaling NaN छन् (implementation dependent)
- निर्णय गर्ने तरिका:
isnan()
फङ्सनद्वारा सुरक्षित रूपमा जाँच गर्न सकिन्छ। - उपयोगका उदाहरणहरू:अनुपस्थित मानहरू, त्रुटि खोज, डिबग मार्कर आदि जस्ता विविध विषयहरू समावेश गर्दछ
- ध्यान दिनुपर्ने बुँदाहरूतुलनात्मक अपरेसनहरू सधैं false हुने बिन्दुहरू, प्रसारणशीलता, र क्र्यास नहुने गुण
NaN सँग कसरी व्यवहार गर्ने: कार्यस्थलमा अभ्यासको लागि
NaN ले कार्यक्रमलाई शान्तै गलत अवस्थातिर अघि बढ्ने सम्भावना समेट्छ। त्यसैले, “पत्ता लागेपछि रोक्नु” भन्दा, “घटनाको पूर्वधारणामा डिजाइन गर्नु” महत्त्वपूर्ण छ।
विशेष गरी संख्यात्मक प्रक्रिया वा विश्वसनीयता आवश्यक पर्ने प्रणालीहरूमा, NaN को पहिचान र हटाउने प्रक्रिया प्रारम्भिक चरणमै राम्ररी डिजाइन गर्दा, पछि आउने बग वा त्रुटिहरूलाई धेरै घटाउन सकिन्छ।