C ++ atof () - C ++ standarta bibliotēka

Funkcija atof () C ++ interpretē virknes saturu kā peldošā komata skaitli un atgriež tās vērtību kā dubultu.

atof () prototips

 dubultā atof (const char * str);

Tas ir definēts galvenes failā.

atof () parametri

  • str - virkne, kurā attēlots peldošā komata skaitlis.

atof () Atgriešanās vērtība

Funkcija atof () atgriež:

  • dubultvērtība (kas tiek pārveidota no virknes).
  • 0.0, ja nevarēja veikt derīgu konversiju.

Ja konvertētā vērtība ir ārpus diapazona, tā izraisa nedefinētu rīcību.

1. piemērs: Kā darbojas 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; ) 

Palaidot programmu, izeja būs:

 Skaitlis virknē = -32,40 Skaitlis divkāršā = -32,4 

Derīga atof () funkcijas peldošā komata vērtība sastāv no izvēles zīmes + vai -, kam seko viena no šīm kopām:

  • Decimāldaļas peldošā komata vērtībai
    • Decimālzīmju grupa (0–9) , pēc izvēles saturot decimālzīmi ( Piemēram: 9.056, -0.013 utt.
    • Neobligāta eksponenta daļa ( evai E), kam seko papildu + vai - zīme un tukša decimālzīmju secība. Piemēram: 1,23455e + 009, 5,23e-018 utt.
  • Heksadecimālai peldošā komata vērtībai:
    • Virkne, kas sākas ar 0xvai 0Xkam seko tukša heksadecimālo ciparu secība, kas pēc izvēles satur decimāldaļu (.). Piemēram: 0xf1b, -0xb1b.51 utt.
    • Neobligāta eksponenta daļa ( pvai P), kam seko papildu + vai - zīme un tukša heksadecimālo ciparu secība. Piemēram: 0x51c.23p5, -0x2a.3p-3 utt.
  • Bezgalība:
    • INFvai INFINITY(ignorējot lietu). Piemēram: -iNf, INFINiTy utt.
  • NaN (nav skaitlis):
    • NANvai NANsequence(ignorējot gadījumu), kur secība ir rakstzīmju secība, kas sastāv tikai no burtciparu rakstzīmēm vai pasvītrojuma (_). Rezultāts ir kluss NaN. Piemēram: Nan, NaN12 utt.

2. piemērs: Kā atof () darbojas ar eksponentiem un heksadecimāliem?

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

Palaidot programmu, izeja būs:

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

3. piemērs: INFINITY un NaN gadījumu skaits

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

Palaidot programmu, izeja būs:

 INFINITY to Double = inf Inf to Double = inf Nan līdz Double = nan NAN uz Double = nan

Kopumā derīgam atof () funkcijas peldošā komata argumentam ir šāda forma:

 (atstarpe) (- | +) (cipari) (. cipari) ((e | E) (- | +) cipari)

Funkcija atof () ignorē visas vadošās atstarpes rakstzīmes, līdz tiek atrasts primārais raksturs, kas nav atstarpes.

Tad, sākot ar šo rakstzīmi, ir nepieciešams pēc iespējas vairāk rakstzīmju, kas veido derīgu peldošā komata attēlojumu un pārvērš tos par peldošā komata vērtību. Tas, kas paliek pāri no virknes pēc pēdējās derīgās rakstzīmes, tiek ignorēts un neietekmē rezultātu.

4. piemērs: funkcija atof () ar atstarpi un beigu rakstzīmēm

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

Palaidot programmu, izeja būs:

 25,5 līdz Double = 25,5 25,5 uz Double = 25,5 25,5 abcd uz Double = 25,5 abcd 25,5 uz Double = 0 INFINITY abcd uz Double = inf INFINITY uz Double = inf Nanlll uz Double = nan

Interesanti raksti...