C ++ atof () - štandardná knižnica C ++

Funkcia atof () v C ++ interpretuje obsah reťazca ako číslo s pohyblivou rádovou čiarkou a vráti jeho hodnotu ako dvojnásobok.

pred () prototyp

 dvojnásobok (const char * str);

Je definované v hlavičkovom súbore.

atof () parametrov

  • str - Reťazec, ktorý má reprezentáciu čísla s pohyblivou rádovou čiarkou.

atof () Vráti hodnotu

Funkcia atof () vráti:

  • dvojnásobná hodnota (ktorá sa prevedie z reťazca).
  • 0,0, ak nebolo možné vykonať platný prevod.

Ak je prevedená hodnota mimo rozsah, spôsobí to nedefinované správanie.

Príklad 1: Ako funguje funkcia 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; ) 

Po spustení programu bude výstup:

 Počet v reťazci = -32,40 Počet v dvojnásobku = -32,4 

Platná hodnota s pohyblivou rádovou čiarkou pre funkciu atof () pozostáva z voliteľného znamienka + alebo -, za ktorým nasleduje jedna z nasledujúcich množín:

  • Pre desatinnú hodnotu s pohyblivou desatinnou čiarkou:
    • Skupina desatinných číslic (0-9) , voliteľne obsahujúca desatinnú čiarku (.). Napríklad: 9,056, -0,013 atď.
    • Voliteľná exponentová časť ( ealebo E), za ktorou nasleduje voliteľný znak + alebo - a neprázdna postupnosť desatinných číslic. Napríklad: 1,23455e + 009, 5,23e-018 atď.
  • Pre hexadecimálnu hodnotu s pohyblivou rádovou čiarkou:
    • Reťazec začínajúci na 0xalebo 0X, za ktorým nasleduje neprázdna sekvencia šestnástkových číslic, voliteľne obsahujúca desatinnú čiarku (.). Napríklad: 0xf1b, -0xb1b.51 atď.
    • Voliteľná exponentová časť ( palebo P), za ktorou nasleduje voliteľný znak + alebo - a neprázdna sekvencia hexadecimálnych číslic. Napríklad: 0x51c.23p5, -0x2a.3p-3 atď.
  • Nekonečno:
    • INFalebo INFINITY(ignorovanie veľkých a malých písmen). Napríklad: -iNf, INfINiTy atď.
  • NaN (nie číslo):
    • NANalebo NANsequence(ignorovanie malých a veľkých písmen), kde sekvencia je sekvencia znakov pozostávajúca iba z alfanumerických znakov alebo podčiarkovníka (_). Výsledkom je tichý NaN. Napríklad: Nan, NaN12 atď.

Príklad 2: Ako atof () pracuje s exponentmi a hexadecimálnymi číslami?

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

Po spustení programu bude výstup:

 -44,01e-3 na dvojnásobok = -44,01 -44,01e-3 na dvojnásobok = -0,04401 0xf1bc na dvojnásobok = 61884 0xf1bc.51 na dvojnásobok = 61884,3 

Príklad 3: ďalšie prípady pre INFINITY a 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; ) 

Po spustení programu bude výstup:

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

Platný argument s pohyblivou rádovou čiarkou pre funkciu atof () má vo všeobecnosti nasledujúcu formu:

 (biele medzery) (- | +) (číslice) (. číslice) ((e | E) (- | +) číslice)

Funkcia atof () ignoruje všetky vedúce medzery, kým sa nenájde primárny znak bez medzier.

Potom, počnúc týmto znakom, trvá čo najviac znakov, ktoré vytvoria platné vyjadrenie s pohyblivou rádovou čiarkou a prevedú ich na hodnotu s pohyblivou desatinnou čiarkou. Čokoľvek, čo zostane z reťazca po poslednom platnom znaku, je ignorované a nemá to žiadny vplyv na výsledok.

Príklad 4: funkcia atof () s medzerami a koncovými znakmi

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

Po spustení programu bude výstup:

 25,5 až dvojnásobok = 25,5 25,5 až dvojnásobok = 25,5 25,5 abcd na dvojnásobok = 25,5 abcd 25,5 na dvojnásobok = 0 INFINITYabcd na dvojnásobok = inf INFINITY na dvojnásobok = inf Nanlll na dvojitý = nan

Zaujímavé články...