C ++ atof () - C ++ стандартна библиотека

Функцията atof () в C ++ интерпретира съдържанието на низ като число с плаваща запетая и връща стойността му като двойно.

atof () прототип

 двоен atof (const char * str);

Той се определя в заглавния файл.

atof () Параметри

  • str - низ, представящ число с плаваща запетая.

atof () Върната стойност

Функцията atof () връща:

  • двойна стойност (която се преобразува от низа).
  • 0.0, ако не може да се извърши валидно преобразуване.

Ако преобразуваната стойност е извън обхвата, това причинява недефинирано поведение.

Пример 1: Как работи функцията 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; ) 

Когато стартирате програмата, изходът ще бъде:

 Число в низ = -32,40 Брой в двойно = -32,4 

Валидна стойност с плаваща запетая за функцията atof () се състои от незадължителен знак + или -, последван от един от следните набори:

  • За десетична стойност с плаваща запетая:
    • Група десетични цифри (0-9) , по избор съдържаща десетична точка (.). Например: 9.056, -0.013 и т.н.
    • Незадължителна експонентна част ( eили E), последвана от незадължителен знак + или - и непразна последователност от десетични цифри. Например: 1.23455e + 009, 5.23e-018 и т.н.
  • За шестнадесетична стойност с плаваща запетая:
    • Низ, започващ с 0xили 0X, последван от непразна последователност от шестнадесетични цифри, по избор съдържаща десетична точка (.). Например: 0xf1b, -0xb1b.51 и т.н.
    • Незадължителна степенна част ( pили P), последвана от незадължителен знак + или - и непразна последователност от шестнадесетични цифри. Например: 0x51c.23p5, -0x2a.3p-3 и т.н.
  • Безкрайност:
    • INFили INFINITY(игнорирайки случай). Например: -iNf, INfINiTy и др.
  • NaN (не число):
    • NANили NANsequence(пренебрегване на случай), където последователността е последователност от символи, състояща се само от буквено-цифрови знаци или долното (_). Например: Nan, NaN12 и др.

Пример 2: Как atof () работи с експоненти и шестнадесетични числа?

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

Когато стартирате програмата, изходът ще бъде:

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

Пример 3: atof Случаи за INFINITY и 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; ) 

Когато стартирате програмата, изходът ще бъде:

 INFINITY до Double = inf Inf до Double = inf Nan до Double = nan NAN до Double = nan

По принцип валиден аргумент с плаваща запетая за функцията atof () има следната форма:

 (празно пространство) (- | +) (цифри) (.цифри) ((д | Е) (- | +) цифри)

Функцията atof () игнорира всички водещи интервали, докато не бъде намерен основният небел интервал.

След това, започвайки от този знак, са необходими колкото се може повече символи, които формират валидно представяне с плаваща запетая и ги преобразуват в стойност с плаваща запетая. Всичко, което е останало от низа след последния валиден знак, се игнорира и няма ефект върху резултата.

Пример 4: функция atof () с интервали и последващи символи

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

Когато стартирате програмата, изходът ще бъде:

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

Интересни статии...