You are here: irt.org | FAQ | JavaScript | Number | Q8 [ previous next ]
<script language="JavaScript"><!-- function outputComma(number) { number = '' + number 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); } return (output); } else return number; } document.write(outputComma(1)+'<br>'); document.write(outputComma(12)+'<br>'); document.write(outputComma(123)+'<br>'); document.write(outputComma(1234)+'<br>'); document.write(outputComma(12345)+'<br>'); document.write(outputComma(123456)+'<br>'); document.write(outputComma(1234567)+'<br>'); document.write(outputComma(12345678)+'<br>'); document.write(outputComma(123456789)+'<br>'); document.write(outputComma(1234567890)+'<br>'); //--></script>
Another solution is given below:
<script language="JavaScript"><!-- function reverseIt(str) { if (!str) return; // nothing to change var rstr = ''; for (i=str.length-1;i>=0;i--) rstr += str.charAt(i); return rstr; } function thousands(str) { var saveStr = "" + str; if (saveStr.length < 4) return str; var revStr = reverseIt(saveStr); var newStr = ''; for (var i=0;i<revStr.length;i++) { if (i>0 && (i%3)==0) newStr += ','; newStr += revStr.charAt(i); } return reverseIt(newStr); } //--></script> <form> <input type="text" name="inText"> <input type="text" name="outText"> <input type="button" onClick="this.form.outText.value=thousands(this.form.inText.value);" value="thousands"> </form>
Val Todorov writes:
A more elegant solution:
<script language="JavaScript1.1"><!-- function number_format(n) { var arr=new Array('0'), i=0; while (n>0) {arr[i]=''+n%1000; n=Math.floor(n/1000); i++;} arr=arr.reverse(); for (var i in arr) if (i>0) //padding zeros while (arr[i].length<3) arr[i]='0'+arr[i]; return arr.join(); } //--></script> <form> <input type="text" name="input"> <input type="text" name="output"> <input type="button" onClick="this.form.output.value=number_format(this.form.input.value)" VALUE="Number Format"> </form>
The following was Submitted by Will Schleter
Some of the other routines don't work if the numbers are negative or include decimals. Here is a fairly simple routine that seems to work.
function outputComma(number) { str = number.toString(); i = str.indexOf("."); if (i<1) { i=str.length; } while (i>3) { i-=3; j = str.charAt(i-1); if (j>="0" && j<="9") { str = str.substr(0,i) + "," + str.substr(i); } } return str; }