What is the most efficient way to format strings with rounding and thousand separator in C? -
so have inner loop situation buffer of floating point , integer values copied on buffer in string format.
what alternatives round , insert thousand separator when formatting strings? whatever approach end using, has flexible enough in permitting different formats. also, because inner loop scenario, want optimize solution far possible.
it seem locale.h
1 way it. in case, how can setup customized locales, , how use them? or there better alternative altogether? if noob question please point me in right direction.
edit:
here few examples clarify:
1000
gives 1,000
(if want use ,
thousand separator)
1000
gives 1 000
(if want use space
thousand separator)
1000.123
gives 1,000.1
(if want round 1 digit , use ,
thousand separator)
0
gives `` (if want show 0 blank string)
i on posix system btw...
you can try set locale using setlocale
, use printf '
flag , precision value rounding. whether work, depends on c library.
see following program:
#include <locale.h> #include <stdio.h> int main() { double value = 1234567890.123; if (!setlocale(lc_all, "en_us.utf8")) { fprintf(stderr, "locale not found.\n"); return 1; } printf("%'.0f\n", value); printf("%'.1f\n", value); return 0; }
on ubuntu system, output is:
1,234,567,890 1,234,567,890.1
Comments
Post a Comment