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

Функција атоф () у језику Ц ++ интерпретира садржај низа као број са покретном тачком и враћа његову вредност као двоструку.

атоф () прототип

 дупли атоф (цонст цхар * стр);

Дефинисано је у заглављу датотеке.

атоф () Параметри

  • стр - Низ који има број с покретном зарезом.

атоф () Повратна вредност

Функција атоф () враћа:

  • двострука вредност (која се претвара из низа).
  • 0.0 ако није било могуће извршити ваљану конверзију.

Ако је претворена вредност ван опсега, то узрокује недефинисано понашање.

Пример 1: Како функционише атоф () функција?

 #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 

Важећа вредност са покретном зарезом за функцију атоф () састоји се од опционалног знака + или - иза којег следи један од следећих скупова:

  • За децималну вредност са покретном зарезом:
    • Група децималних цифара (0-9) , која опционо садржи децималну тачку (.). На пример: 9.056, -0.013 итд.
    • Необавезни експонентни део ( eили E) праћен необвезним знаком + или - и непразним низом децималних цифара. На пример: 1.23455е + 009, 5.23е-018 итд.
  • За хексадецималну вредност са покретном зарезом:
    • Низ који започиње са 0xили 0Xиза којег слиједи непразан низ хексадецималних цифара, који опционално садржи децималну тачку (.). На пример: 0кф1б, -0кб1б.51 итд.
    • Необавезни експонентни део ( pили P) праћен необавезним знаком + или - и непразан низ хексадецималних цифара. На пример: 0к51ц.23п5, -0к2а.3п-3 итд.
  • Инфинити:
    • INFили INFINITY(игноришући случај). На пример: -иНф, ИНФИНиТи итд.
  • НаН (није број):
    • NANили NANsequence(игноришући случај) где је секвенца секвенца знакова која се састоји само од алфанумеричких знакова или доње црте (_). Резултат је тихи НаН. На пример: Нан, НаН12 итд.

Пример 2: Како атоф () ради са експонентима и хексадецималима?

 #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.01е-3 за Доубле = -44.01 -44.01е-3 за Доубле = -0.04401 0кф1бц за Доубле = 61884 0кф1бц.51 за Доубле = 61884.3 

Пример 3: међу случајевима за ИНФИНИТИ и НаН

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

Када покренете програм, излаз ће бити:

 ИНФИНИТИ до Доубле = инф Инф до Доубле = инф Нан до Доубле = нан НАН до Доубле = нан

Генерално, важећи аргумент са помичном тачком за функцију атоф () има следећи облик:

 (размак) (- | +) (цифре) (.цифре) ((е | Е) (- | +) цифре)

Функција атоф () игнорише све водеће размаке све док се не пронађе примарни не-размак.

Затим, почев од овог знака, потребно је што више знакова који формирају важећу представу с помичном тачком и претварају их у вредност са помичном тачком. Шта год је остало од низа након последњег важећег знака, занемарује се и нема утицаја на резултат.

Пример 4: функција атоф () са размацима и пратећим знаковима

 #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 у Доубле = 25,5 25,5 у Доубле = 25,5 25,5абцд у Доубле = 25,5 абцд25,5 у Доубле = 0 ИНФИНИТИабцд у Доубле = инф ИНФИНИТИ у Доубле = инф Нанллл у Доубле = нан

Занимљиви Чланци...