On Thursday 21 August 2003 21:33, Bernhard Walle wrote:
gibt es in C eine standardisierte Möglichkeit, Zahlen mit Tausenderpunkt zu formatieren. Der "Punkt" sollte dabei Abhängig von der locale sein. Entweder ANSI-C oder Glib.
Dass ich das passende Zeichen mit struct lconv, thousands_sep von Hand bestimmen und dann in einer Schleife setzen kann ist mir klar, ich möchte nur wissen ob es einfacher und standardisierter geht.
sprintf("%'f", 33333.3) funktioniert zwar hier, scheint aber hochgradig unportabel zu sein. Schaut's bei der glib besser aus?
Aus "man 3 printf": "For some numeric conversions a radix character (`decimal point') or thousands' grouping character is used. The actual character used depends on the LC_NUMERIC part of the locale. The POSIX locale uses `.' as radix character, and does not have a grouping character. Thus, printf("%'.2f", 1234567.89); results in `1234567.89' in the POSIX locale, in `1234567,89' in the nl_NL locale, and in `1.234.567,89' in the da_DK locale."
Plattformen wären mindestens Linux, FreeBSD, NetBSD, OpenBSD und Sun Solaris in einigermaßen aktuellen Versionen.
Also laut Man-Page nix POSIX, d.h. bei Solaris ist es unsicher (da mußt Du
selber nachsehen), aber die anderen sind alle GLIBC-basiert, d.h. dort sollte
es gehen.
CU
--
Stefan Hundhammer