On May 2, 2006, at 5:54 AM, Steve wrote:
Hello all, This is prolly a little offtopic, but I'm wondering if anyone can recommend a good quick method of converting numbers to text.
I suck at C, but here's a stab at it... [EMAIL PROTECTED]:~$ ./count 1 15 100 393 1938 91283 4918239 2147483647 1: one 15: fifteen 100: one hundred 393: three hundred ninety-three 1938: one thousand nine hundred thirty-eight 91283: ninety-one thousand two hundred eighty-three4918239: four million nine hundred eighteen thousand two hundred thirty-nine 2147483647: two billion one hundred forty-seven million four hundred eighty-three thousand six hundred forty-seven
// ------------------------------------ // to compile: gcc -lm -o count count.c #include <stdio.h> #include <math.h> const char *num[13]={"zero","one","two","three","four","five","six", "seven","eight","nine","ten","eleven","twelve"}; const char *dim[10]={"","teen","twen","thir","for","fif","six","seven", "eigh","nine"}; const char *pwr[4]={"hundred", "thousand", "million", "billion" }; int main(int argc, char **argv) { int i; for (i=1; i < argc; ++i) { long work = atoi(argv[i]); char words[256] = ""; stringify(work, words); printf("%ld: %s\n", work, &words); } } stringify(long work, char *retval) { if (work > 99) { long power; for (power=9; power>-1; power-=3) { long e = (long)pow(10.0, (double)(power > 0 ? power : 2)); if (work >= e) { long remainder = work % e; long coefficient = (work - remainder) / e; char coefficient_string[256] = ""; char remainder_string[256] = ""; stringify(coefficient, coefficient_string); if (remainder > 0) stringify(remainder, remainder_string); sprintf(retval, "%s %s %s", coefficient_string, pwr[power/3], remainder_string); break; } } } else if (work > 19) { if (work%10 == 0) sprintf(retval, "%sty", dim[work/10]); else sprintf(retval, "%sty-%s", dim[work/10], num[work%10]); } else if (work >12) { long j = work%10;sprintf(retval, "%s%s", j==3 || j==5 || j==8 ? dim[j] : num[j], dim[1]);
} else sprintf(retval, "%s", num[work]); }
smime.p7s
Description: S/MIME cryptographic signature
/* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */