C ++ में atof () फ़ंक्शन एक स्ट्रिंग की सामग्री को एक फ्लोटिंग पॉइंट नंबर के रूप में व्याख्या करता है और एक डबल के रूप में इसका मान लौटाता है।
atof () प्रोटोटाइप
डबल एटॉफ़ (कास्ट चार * स्ट्र);
इसे हेडर फ़ाइल में परिभाषित किया गया है।
atof () पैरामीटर्स
- str - एक स्ट्रिंग जो फ्लोटिंग पॉइंट संख्या का प्रतिनिधित्व करती है।
atof () रिटर्न वैल्यू
एटॉफ़ () फ़ंक्शन रिटर्न:
- एक डबल मान (जिसे स्ट्रिंग से परिवर्तित किया गया है)।
- 0.0 यदि कोई वैध रूपांतरण नहीं किया जा सका।
यदि परिवर्तित मान श्रेणी से बाहर है, तो यह अपरिभाषित व्यवहार का कारण बनता है।
उदाहरण 1: कैसे काम करता है () फ़ंक्शन?
#include #include using namespace std; int main() ( char numberString() = "-32.40"; double numberInDouble; cout << "Number in String = " << numberString << endl; numberInDouble = atof(numberString); cout << "Number in Double = " << numberInDouble; return 0; )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
स्ट्रिंग में संख्या = -32.40 डबल में संख्या = -32.4
Atof () फ़ंक्शन के लिए एक मान्य फ़्लोटिंग-पॉइंट मान में एक वैकल्पिक + या - साइन इन निम्नलिखित सेटों में से एक होता है:
- दशमलव फ़्लोटिंग-पॉइंट मान के लिए:
- दशमलव अंकों (0-9) का एक समूह , वैकल्पिक रूप से दशमलव बिंदु (।) युक्त। उदाहरण के लिए: 9.056, -0.013, आदि।
- एक वैकल्पिक घातांक भाग (
e
याE
) एक वैकल्पिक + या - हस्ताक्षर और दशमलव अंकों के गैर-खाली अनुक्रम के बाद। उदाहरण के लिए: 1.23455e + 009, 5.23e-018, आदि।
- हेक्साडेसिमल फ्लोटिंग-पॉइंट वैल्यू के लिए:
- हेक्साडेसिमल अंकों के एक गैर-खाली अनुक्रम के साथ
0x
या0X
उसके बाद शुरू होने वाली एक स्ट्रिंग , वैकल्पिक रूप से एक दशमलव बिंदु (।) से युक्त होती है। उदाहरण के लिए: 0xf1b, -0xb1b.51, आदि। - एक वैकल्पिक प्रतिपादक हिस्सा (
p
याP
) एक वैकल्पिक + या - हस्ताक्षर और हेक्साडेसिमल अंकों के गैर-खाली अनुक्रम के बाद। उदाहरण के लिए: 0x51c.23p5, -0x2a.3p-3, आदि।
- हेक्साडेसिमल अंकों के एक गैर-खाली अनुक्रम के साथ
- अनंत:
INF
याINFINITY
(मामले की अनदेखी)। उदाहरण के लिए: -iNf, INfINiTy, आदि।
- NaN (संख्या नहीं):
NAN
याNANsequence
(मामले की अनदेखी) जहाँ अनुक्रम वर्णों का एक अनुक्रम होता है जिसमें केवल अल्फ़ान्यूमेरिक वर्ण या अंडरस्कोर (_) होते हैं। परिणाम एक शांत NaN है। उदाहरण के लिए: नान, NaN12, आदि।
उदाहरण 2: एक्सपो और हेक्साडेसिमल के साथ कैसे एटॉफ़ () काम करता है?
#include #include using namespace std; int main() ( cout << "-44.01e-3" << " to Double = " << atof("-44.01e-0") << endl; cout << "-44.01e-3" << " to Double = " << atof("-44.01e-3") << endl; cout << "0xf1bc" << " to Double = " << atof("0xf1bc") << endl; cout << "0xf1bc.51" << " to Double = " << atof("0xf1bc.51") << endl; return 0; )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
-44.01e-3 से डबल = -44.01 -44.01e-3 से डबल = -0.04401 0xf1bc से डबल = 61884 0xf1bc.51 से डबल = 61884.3
उदाहरण 3: सूचना और NaN के लिए मामले
#include #include using namespace std; int main() ( cout << "INFINITY" << " to Double = " << atof("INFINITY") << endl; cout << "Inf" << " to Double = " << atof("Inf") << endl; cout << "Nan" << " to Double = " << atof("Nan") << endl; cout << "NAN" << " to Double = " << atof("NAN") << endl; return 0; )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
डबल करने के लिए इन्फिनिटी = इन्फ डबल से इन्फ = नान से डबल = नान नान से डबल = नैन
सामान्य तौर पर, एटॉफ़ () फ़ंक्शन के लिए एक मान्य फ़्लोटिंग पॉइंट तर्क के निम्नलिखित रूप हैं:
(व्हाट्सएप) (- | +) (अंक) (.digits) ((ई | ई) (- | + +) अंक)
एटॉफ़ () फ़ंक्शन सभी प्रमुख व्हाट्सएप पात्रों को अनदेखा करता है जब तक कि प्राथमिक गैर-व्हाट्सएप चरित्र नहीं मिलता है।
फिर, इस चरित्र से शुरुआत करते हुए, यह संभव के रूप में कई वर्ण लेता है जो एक मान्य फ़्लोटिंग-पॉइंट प्रतिनिधित्व बनाता है और उन्हें फ़्लोटिंग पॉइंट मान में कनवर्ट करता है। अंतिम वैध चरित्र को नजरअंदाज करने के बाद स्ट्रिंग के जो कुछ भी बचा है, उसका परिणाम पर कोई प्रभाव नहीं पड़ता है।
उदाहरण 4: व्हाट्सप और अनुगामी पात्रों के साथ एटॉफ़ () फ़ंक्शन
#include #include using namespace std; int main() ( cout << "25.5" << " to Double = " << atof(" 25.5") << endl; cout << "25.5 " << " to Double = " << atof(" 25.5 ") << endl; cout << "25.5abcd" << " to Double = " << atof("25.5abcd") << endl; // Returns 0 because of invalid conversion cout << "abcd25.5" << " to Double = " << atof("abcd25.5") << endl; // Rules for whitespace and trailing character also apply for infinity and Nan cout << "INFINITYabcd" << " to Double = " << atof("INFINITYabcd") << endl; cout << "INFINITY" << " to Double = " << atof(" INFINITY") << endl; cout << "Nanlll" << " to Double = " << atof("Nanlll") << endl; return 0; )
जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:
25.5 से डबल = 25.5 25.5 से डबल = 25.5 25.5cd से डबल = 25.5 abcd25.5 से डबल = 0 इन्फिनिटीबैंक से डबल = इन्फिनिटी से डबल = एनएएनएल से डबल = नैन