C ++ atof () - C ++ Standardbibliothek

Die Funktion atof () in C ++ interpretiert den Inhalt einer Zeichenfolge als Gleitkommazahl und gibt ihren Wert als Double zurück.

atof () Prototyp

 double atof (const char * str);

Es ist in der Header-Datei definiert.

atof () Parameter

  • str - Ein String mit der Darstellung einer Gleitkommazahl.

atof () Rückgabewert

Die Funktion atof () gibt Folgendes zurück:

  • ein doppelter Wert (der aus der Zeichenfolge konvertiert wird).
  • 0.0, wenn keine gültige Konvertierung durchgeführt werden konnte.

Wenn der konvertierte Wert außerhalb des Bereichs liegt, führt dies zu undefiniertem Verhalten.

Beispiel 1: Wie funktioniert die Funktion 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; ) 

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Zahl in Zeichenfolge = -32,40 Zahl in Doppel = -32,4 

Ein gültiger Gleitkommawert für die Funktion atof () besteht aus einem optionalen + oder - Vorzeichen, gefolgt von einer der folgenden Mengen:

  • Für dezimalen Gleitkommawert:
    • Eine Gruppe von Dezimalstellen (0-9) , die optional einen Dezimalpunkt (.) Enthält . Zum Beispiel: 9.056, -0.013 usw.
    • Ein optionaler Exponententeil ( eoder E), gefolgt von einem optionalen + oder - Vorzeichen und einer nicht leeren Folge von Dezimalstellen. Zum Beispiel: 1.23455e + 009, 5.23e-018 usw.
  • Für hexadezimalen Gleitkommawert:
    • Eine Zeichenfolge, die mit 0xoder beginnt 0X, gefolgt von einer nicht leeren Folge von hexadezimalen Ziffern, die optional einen Dezimalpunkt (.) Enthält. Zum Beispiel: 0xf1b, -0xb1b.51 usw.
    • Ein optionaler Exponententeil ( poder P), gefolgt von einem optionalen + oder - Zeichen und einer nicht leeren Folge von hexadezimalen Ziffern. Zum Beispiel: 0x51c.23p5, -0x2a.3p-3 usw.
  • Unendlichkeit:
    • INFoder INFINITY(Groß- / Kleinschreibung ignorieren). Zum Beispiel: -iNf, INfINiTy usw.
  • NaN (keine Zahl):
    • NANoder NANsequence(Groß- und Kleinschreibung ignorieren), wenn die Sequenz eine Folge von Zeichen ist, die nur aus alphanumerischen Zeichen oder dem Unterstrich (_) besteht. Das Ergebnis ist eine ruhige NaN. Zum Beispiel: Nan, NaN12 usw.

Beispiel 2: Wie funktioniert atof () mit Exponenten und Hexadezimalen?

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

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

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

Beispiel 3: Fälle von Unendlichkeit und 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; ) 

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

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

Im Allgemeinen hat ein gültiges Gleitkommaargument für die Funktion atof () die folgende Form:

 (Leerzeichen) (- | +) (Ziffern) (.Ziffern) ((e | E) (- | +) Ziffern)

Die Funktion atof () ignoriert alle führenden Leerzeichen, bis das primäre Nicht-Leerzeichen gefunden wird.

Ausgehend von diesem Zeichen werden dann so viele Zeichen wie möglich verwendet, um eine gültige Gleitkommadarstellung zu bilden und diese in einen Gleitkommawert umzuwandeln. Was nach dem letzten gültigen Zeichen von der Zeichenfolge übrig bleibt, wird ignoriert und hat keine Auswirkung auf das Ergebnis.

Beispiel 4: atof () -Funktion mit Leerzeichen und nachgestellten Zeichen

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

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

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

Interessante Beiträge...