I had a assignment in which i converted a double value to currency for a print report with a home made function.
void monetary_balance (double bal_val, int flag)
{
const long test1 = 100000000L, test2 = 100000L,
grand = 1000L, tun = 100L;
long under100 = 0L, under1000 = 0L, undermill = 0L,
convertval = 0L, overmill = 0L;
char minus = ' ';
if(bal_val < 0) /* negative value ?*/
{ /* converts to positive */
bal_val -= (bal_val * 2);
minus = '-'; /*minus sign for display or print */
}
bal_val *= 100;
convertval = (long)bal_val;
if(convertval >= test1) /*over 999,999.99*/
{
under100 = convertval % tun;
under1000 = convertval % test2;
under1000 = under1000 / tun;
undermill = convertval / test2;
undermill = undermill % grand;
overmill = convertval / test1;
if(flag)
printf("%c%3ld,%03ld,%03ld.%02ld", minus, overmill, undermill,
under1000, under100);
else
fprintf(prnt,"%c%3ld,%03ld,%03ld.%02ld", minus, overmill,
undermill, under1000, under100);
}
else if(convertval >= test2) /*over 999.99*/
{
under100 = convertval % tun;
under1000 = convertval % test2;
under1000 = under1000 / tun;
undermill = convertval / test2;
if(flag)
printf("%c%3ld,%03ld.%02ld ", minus, undermill, under1000,
under100);
else
fprintf(prnt,"%c%3ld,%03ld.%02ld ", minus, undermill,
under1000,under100);
}
else /*must be under 1000.00*/
{
under100 = convertval % tun;
under1000 = convertval % test2;
under1000 = under1000 / tun;
if(flag)
printf("%c %3ld.%02ld ", minus, under1000, under100);
else
fprintf(prnt,"%c %3ld.%02ld ", minus, under1000, under100);
}
} /* end function monetary_balance */
now the parameters are a double value but no bigger than 42,000,000 (million); and a int value which determins if you want to print to the display or to file.
function call...
printf(" In currency 41521213.12 is "

;
monetary value(41521213.12, 1); /* this will print 41,521,213.12 to the display. Hoping to get certified..in C programming.