Корректное форматирование числовых и денежных значений требует значительной низкоуровневой информации. Указанная информация доступна в struct lconv
localeconv():#include
struct lconv *localeconv(void);
Подобно функции ctime()
struct lconv (слегка сжатая), непосредственно из GLIBC :struct lconv {
/* Числовая (не денежная) информация. */
char *decimal_point; /* Разделитель десятичной дроби. */
char *thousands_sep; /* Разделитель тысяч. */
/* Каждый элемент является числом цифр в каждой группе;
элементы с большими индексами оставлены дальше. Элемент со
значением CHAR_MAX означает, что дальнейшая группировка не
производится. Элемент со значением 0 означает, что предыдущий
элемент используется для всех оставшихся групп. */
char *grouping;
/* Денежная информация. */
/* Первые три символа являются символами валют из ISO 4217.
Четвертый символ является разделителем. Пятый символ '\0'. */
char *int_curr_symbol;
char *currency_symbol; /* Символ местной валюты. */
char *mon_decimal_point; /* Символ десятичной точки. */
char *mon_thousands_sep; /* Разделитель тысяч. */
char *mon_grouping; /* Аналогично элементу 'группировки' (выше). */
char *positive_sign; /* Знак для положительных значений. */
char *negative_sign; /* Знак для отрицательных значений. */
char int_frac_digits; /* Международные цифры дробей. */
char frac_digits; /* Местные цифры дробей. */
/* 1, если символ валюты перед положит, значением, 0, если после. */
char p_cs_precedes;
/* 1, если символ валюты отделяется от положит, значения пробелом. */
char p_sep_by_space;
/* 1, если символ валюты перед отриц. значением, 0, если после. */
char n_cs_precedes;
/* 1, если символ валюты отделяется от отриц. значения пробелом. */
char n_sep_by_space;
/* Размещение положительного и отрицательного знака:
0 Количество и символ валюты окружены скобками.
1 Строка знака перед количеством и символом валюты.
2 Строка знака за количеством и символом валюты.
3 Строка знака непосредственно перед символом валюты.
4 Строка знака непосредственно после символа валюты. */
char p_sign_posn;
char n_sign_posn;
/* 1, если int_curr_symbol до положит. значения, 0, если после. */
char int_p_cs_precedes;
/* 1, если int_curr_symbol отделен от положит, знач. пробелом. */
char int_p_sep_by_space;
/* 1, если int_curr_symbol перед отриц. значением, 0, если после. */
char int_n_cs_precedes;
/* 1, если int_curr_symbol отделен от отриц. знач. пробелом. */
char int_n_sep_by_space;
/* Размещение положительного и отрицательного знака:
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT