You are here: irt.org | FAQ | JavaScript | Number | Q723 [ previous next ]
Try this:
<SCRIPT LANGUAGE="JavaScript"><!-- function outputMoney(number) { return outputDollars(Math.floor(number-0) + '') + outputCents(number - 0); } 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); } 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>'); //--></SCRIPT>
Thanks to Jeff Freeman for providing a bug fix to outputCents().
The following was submitted by will rusk
function formatNumber (number) { number = '' + number; numberParts = new Array(); numberParts = number.split("."); number = numberParts[0]; if (number.length > 3) { 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); } } if (numberParts.length == 2) { output = output + "." + numberParts[1]; } return (output); } else { if (numberParts.length == 2) { number = number + "." + numberParts[1]; } return number; } }