Node:General Numeric, Next:Currency Symbol, Up:The Lame Way to Locale Data
These are the standard members of struct lconv; there may be
others.
char *decimal_point
char *mon_decimal_point
C locale, the
value of decimal_point is ".", and the value of
mon_decimal_point is "".
char *thousands_sep
char *mon_thousands_sep
C locale, both members have a value of
"" (the empty string).
char *grouping
char *mon_grouping
grouping applies to non-monetary quantities
and mon_grouping applies to monetary quantities. Use either
thousands_sep or mon_thousands_sep to separate the digit
groups.
Each member of these strings is to be interpreted as an integer value of
type char. Successive numbers (from left to right) give the
sizes of successive groups (from right to left, starting at the decimal
point.) The last member is either 0, in which case the previous
member is used over and over again for all the remaining groups, or
CHAR_MAX, in which case there is no more grouping--or, put
another way, any remaining digits form one large group without
separators.
For example, if grouping is "\04\03\02", the correct
grouping for the number 123456787654321 is 12, 34,
56, 78, 765, 4321. This uses a group of 4
digits at the end, preceded by a group of 3 digits, preceded by groups
of 2 digits (as many as needed). With a separator of ,, the
number would be printed as 12,34,56,78,765,4321.
A value of "\03" indicates repeated groups of three digits, as
normally used in the U.S.
In the standard C locale, both grouping and
mon_grouping have a value of "". This value specifies no
grouping at all.
char int_frac_digits
char frac_digits
In the standard C locale, both of these members have the value
CHAR_MAX, meaning "unspecified". The ISO standard doesn't say
what to do when you find this value; we recommend printing no
fractional digits. (This locale also specifies the empty string for
mon_decimal_point, so printing any fractional digits would be
confusing!)