Format a text field to display a monetary value.

This code consists of one parent function and two child sub functions. Example 100,000.00
JavaScript


/////////////////////////////////////////////////////////////////////////
function outputMoney(number) {
    var cents = outputCents(number - 0);
    if (cents=='.100') {
	/* ---- needed for rouding to the next dollar ----- */
	return outputDollars(Math.floor(number+1) + '') + '.00';
    }else {
    	return outputDollars(Math.floor(number-0) + '') + cents;
    }
}
/////////////////////////////////////////////////////////////////////////
function outputDollars(number) {
    if (number.length <= 3)
        return (number == '' ? '0' : number);
    else {
        var mod = number.length%3;
        var output = (mod == 0 ? '' : (number.substring(0,mod)));
        for (i=0 ; i < Math.floor(number.length/3) ; i++) {
            if ((mod ==0) && (i ==0))
                output+= number.substring(mod+3*i,mod+3*i+3);
            else
                output+= ',' + number.substring(mod+3*i,mod+3*i+3);
        }
        return (output);
    }
}
/////////////////////////////////////////////////////////////////////////
function outputCents(amount) {
    amount = Math.round( ( (amount) - Math.floor(amount) ) *100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}
/////////////////////////////////////////////////////////////////////////


EXAMPLE USE:

document.write(outputMoney(0)+'<BR>');
document.write(outputMoney(1)+'<BR>');
document.write(outputMoney(12.)+'<BR>');
document.write(outputMoney(123.0)+'<BR>');
document.write(outputMoney(123.01)+'<BR>');
document.write(outputMoney(1234.00)+'<BR>');
document.write(outputMoney(12345.1)+'<BR>');
document.write(outputMoney(123456.22)+'<BR>');
document.write(outputMoney(1234567.333)+'<BR>');
document.write(outputMoney(12345678.4444)+'<BR>');
document.write(outputMoney(123456789.55555)+'<BR>');
document.write(outputMoney(1234567890.666666)+'<BR>');
document.write(outputMoney('1234567890.666666')+'<BR>');

Posted by fbrefere001 on Wednesday January 18, 2006