C ++ atof () - C ++ standardraamatukogu

Funktsioon atof () C ++ - s tõlgendab stringi sisu ujukomaarvuna ja tagastab selle väärtuse topeltena.

atof () prototüüp

 topelt atof (const char * str);

See on määratletud päisefailis.

atof () parameetrid

  • str - string, millel on ujukoma number.

atof () Tagastusväärtus

Funktsioon atof () tagastab:

  • topeltväärtus (mis teisendatakse stringist).
  • 0,0, kui kehtivat teisendamist ei õnnestunud teha.

Kui teisendatud väärtus jääb vahemikust välja, põhjustab see määratlemata käitumist.

Näide 1: Kuidas funktsioon atof () töötab?

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

Programmi käivitamisel on väljund järgmine:

 Number stringis = -32,40 Number kahekordses = -32,4 

Funktsiooni atof () kehtiv ujukoma väärtus koosneb valikulisest märkest + või -, millele järgneb üks järgmistest komplektidest:

  • Ujukoma kümnendkoha väärtuse korral:
    • Kümnendkohtade rühm (0–9) , mis sisaldab valikuliselt komakohta (.). Näiteks: 9.056, -0.013 jne.
    • Valikuline eksponendiosa ( evõi E), millele järgneb valikuline märk + või - ja kümnendkohtade tühi jada. Näiteks: 1.23455e + 009, 5.23e-018 jne.
  • Kuueteistkümnendkohalise ujukoma väärtus:
    • String, mis algab tähega 0xvõi 0X, millele järgneb kuueteistkümnendkohaliste numbrite tühi jada, mis sisaldab valikuliselt kümnendkohta (.). Näiteks: 0xf1b, -0xb1b.51 jne.
    • Valikuline eksponentosa ( pvõi P), millele järgneb valikuline märk + või - ja kuueteistkümnendkohaliste numbrite tühi jada. Näiteks: 0x51c.23p5, -0x2a.3p-3 jne.
  • Lõpmatus:
    • INFvõi INFINITY(juhtumit ignoreerides). Näiteks: -iNf, INFINiTy jne.
  • NaN (mitte arv):
    • NANvõi NANsequence(ignoreerides juhtumit), kus järjestus on tähtede jad, mis koosneb ainult tähtnumbrilistest tähtedest või alakriipsust (_). Tulemuseks on vaikne NaN. Näiteks: Nan, NaN12 jne.

Näide 2: Kuidas atof () töötab eksponentide ja kuueteistkümnendkohtadega?

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

Programmi käivitamisel on väljund järgmine:

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

Näide 3: INFINITY ja NaN juhtumid

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

Programmi käivitamisel on väljund järgmine:

 INFINITY to Double = inf Inf topelt = inf Nan to Double = nan NAN to Double = nan

Üldiselt on funktsiooni atof () kehtiv ujukomaargument järgmine vorm:

 (tühik) (- | +) (numbrit) (. numbrit) ((e | E) (- | +) numbrit)

Funktsioon atof () eirab kõiki juhtivaid tühimärke, kuni leitakse esmane mitte-tühimärk.

Seejärel, alates sellest märgist, võtab see võimalikult palju märke, mis moodustavad kehtiva ujukoma kujutise ja teisendavad need ujukoma väärtuseks. Kõik, mis jääb stringist järele pärast viimase kehtiva märgi eiramist, ei mõjuta tulemust.

Näide 4: funktsioon atof () koos tühiku ja lõpumärkidega

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

Programmi käivitamisel on väljund järgmine:

 25,5 kahekordne = 25,5 25,5 kahekordne = 25,5 25,5 abcd kahekordne = 25,5 abcd 25,5 kahekordne = 0 INFINITY abcd kahekordne = inf INFINITY kahekordne = inf Nanlll kahekordne = nan

Huvitavad Artiklid...