C ++ atof () - Standardna knjižnica C ++

Funkcija atof () v jeziku C ++ razlaga vsebino niza kot število s plavajočo vejico in vrne njegovo vrednost kot dvojno.

atof () prototip

 dvojni atof (const char * str);

Določen je v datoteki glave.

atof () Parametri

  • str - niz, ki predstavlja število s plavajočo vejico.

atof () Vrnjena vrednost

Funkcija atof () vrne:

  • dvojna vrednost (ki se pretvori iz niza).
  • 0.0, če ni bilo mogoče izvesti nobene veljavne pretvorbe.

Če je pretvorjena vrednost zunaj obsega, povzroči nedefinirano vedenje.

Primer 1: Kako deluje funkcija atof ()?

 #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; ) 

Ko zaženete program, bo rezultat:

 Število v nizu = -32,40 Število v dvojniku = -32,4 

Veljavna vrednost s plavajočo vejico za funkcijo atof () je sestavljena iz neobveznega znaka + ali -, ki mu sledi eden od naslednjih nizov:

  • Za decimalno vrednost s plavajočo vejico:
    • Skupina decimalnih števk (0–9) , ki neobvezno vsebuje decimalno vejico (.). Na primer: 9.056, -0.013 itd.
    • Izbirni eksponentni del ( eali E), ki mu sledi neobvezni znak + ali - in neprazno zaporedje decimalnih števk. Na primer: 1.23455e + 009, 5.23e-018 itd.
  • Za šestnajstiško vrednost s plavajočo vejico:
    • Niz, ki se začne z 0xali 0X, čemur sledi neprazno zaporedje šestnajstiških številk, ki po izbiri vsebuje decimalno vejico (.). Na primer: 0xf1b, -0xb1b.51 itd.
    • Izbirni eksponentni del ( pali P), ki mu sledi neobvezni znak + ali - in neprazno zaporedje šestnajstiških številk. Na primer: 0x51c.23p5, -0x2a.3p-3 itd.
  • Neskončnost:
    • INFali INFINITY(ignoriranje primera). Na primer: -iNf, INfINiTy itd.
  • NaN (ni številka):
    • NANali NANsequence(prezrtje primera), kjer je zaporedje zaporedje znakov, sestavljeno samo iz alfanumeričnih znakov ali podčrtaja (_). Rezultat je tih NaN. Na primer: Nan, NaN12 itd.

Primer 2: Kako atof () deluje z eksponenti in heksadecimalnimi vrednostmi?

 #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; ) 

Ko zaženete program, bo rezultat:

 -44.01e-3 do Double = -44.01 -44.01e-3 do Double = -0.04401 0xf1bc do Double = 61884 0xf1bc.51 do Double = 61884.3 

Primer 3: med primeri za neskončnost in 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; ) 

Ko zaženete program, bo rezultat:

 INFINITY do Double = inf Inf do Double = inf Nan do Double = nan NAN do Double = nan

Na splošno veljaven argument s plavajočo vejico za funkcijo atof () ima naslednjo obliko:

 (presledek) (- | +) (števke) (.števke) ((e | E) (- | +) števke)

Funkcija atof () prezre vse vodilne presledke, dokler ne najde primarnega znaka, ki ni presledek.

Nato, začenši s tem znakom, vzame čim več znakov, ki tvori veljavno predstavitev s plavajočo vejico in jih pretvori v vrednost s plavajočo vejico. Karkoli je ostalo od niza po zadnjem veljavnem znaku, se prezre in ne vpliva na rezultat.

Primer 4: funkcija atof () s presledki in končnimi znaki

 #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; )

Ko zaženete program, bo rezultat:

 25,5 do Double = 25,5 25,5 do Double = 25,5 25,5abcd do Double = 25,5 abcd25,5 do Double = 0 INFINITYabcd do Double = inf INFINITY do Double = inf Nanlll do Double = nan

Zanimive Članki...