Функція gcvt

Функції _itoa і _ltoa

ПЕРЕТВОРЕННЯ ЧИСЛА В РЯДОК

Функції strtod

Функції atof

Функція atof, певна як

double atof( const char * ptr)

виконує перетворення Asciiz-Рядка в число із плаваючою крапкою типу double. Рядок символів повинна бути представлена з урахуванням формату:

[пробіли][знак][цифри][.][цифри][е|Е[знак]цифри],

де

пробіли – послідовність пробілів або табуляторів;

знак – символ ' + ' або ' ';

цифри – десяткові цифри;

е|Е – символ показника ступені.

Перетворення символів припиняється, як тільки знайдений перший неконвертований символ або досягнутий кінець рядка. Приклад використання функції atof:

char S [41] = "12345e66"; // оголошення й ініціалізація рядка

double d; // оголошення змінної типу double

d = atof (S); // ініціалізація змінної значенням перетвореного рядка

cout << "d=" << d << '\n'; // виводить на екран "d=1.2345e+070"

Функція strtod перетворить рядок символів у число із плаваючою крапкою. Її синтаксис має такий вигляд:

double strtod (const char *s, char **endptr);

Ця функція так само, як і функція atof, перетворить рядок, на який вказує s, у число типу double, з тим лише відмінністю, що у випадку припинення конвертування рядка повертає вказівник endptr на перший непреобразуемый символ. Це дозволяє організувати надалі обробку частини, що залишився, рядка. Приклад використання функції strtod:

char S [41] = "12345f66"; // оголошення й ініціалізація рядка

double d; // оголошення змінної типу double

char * Err; // оголошення вказівника на рядок помилки

d = strtod (S, &Err); // ініціалізація змінної значенням перетвореного рядка

// передача по вказівникові рядка помилки

cout << "d=" << d << '\n'; // виводить на екран " d = 12345 "

cout << "Error=" << Err << '\n'; // виводить на екран " Error = f66 "

Функції зворотного перетворення itoa і _ltoa роблять конвертування чисел типу int і long відповідно в рядок символів. Вони має наступний синтаксис:

char *_ltoa ( long value, char *string, int radix);

char *_itoa ( int value, char *string, int radix);

Дані функції ухвалюють як аргумент число value і перетворять його в рядок string з урахуванням підстави системи числення, представленої в змінній radix. Наступний фрагмент програми перетворить ціле число в рядок, використовуючи десятеричну систему числення:

int numb = 98765;

char S [10];

_itoa (numb, S, 10);

cout << numb << '\n' << S;

Функція gcvt має прототип:

char* gcvt (double val, int ndec, char *buf);

і здійснює конвертування числа val типу double в Ascliz-Рядок, поміщаючи її в буфер buf. Якщо число цифр, що підлягають перетворенню, менше цілого числа, зазначеного в ndec, у перетворенім числі вказуються символи знака й десяткової крапки, при цьому молодші розряди дробової частини відкидаються. А якщо ні, то число перетвориться в експонентну форму. Функція повертає вказівник на початок сформованого рядка.

Наступний нижче приклад демонструє використання функції gcvt для перетворення чисел, що мають різну представлення в масиви цифрових символів.

char str[10];

double num;

// Значущих цифр:

int sig =4;

// Звичайне представлення числа

num = 3.547;

gcvt(num, sig, str);

cout «str «'\n';

// Негативне число

num = -843.7105;

gcvt(num, sig, str);

cout «str «' \n';

// Експонентне представлення num = 0.135e4;

gcvt(num, sig, str);

cout «str «' \n';


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: