A JavaScript number format function
Here is a Javascript script to format a number with a number of decimal places from 0 to 3. It is based on another function to format a currency I found on the World Wild Web. If you wish to increase the number of decimal places, just add case labels to the switch statement.
function formatNumber (obj, decimal) {
//decimal - the number of decimals after the digit from 0 to 3
//-- Returns the passed number as a string in the xxx,xxx.xx format.
anynum=eval(obj.value);
divider =10;
switch(decimal){
case 0:
divider =1;
break;
case 1:
divider =10;
break;
case 2:
divider =100;
break;
default: //for 3 decimal places
divider =1000;
}
workNum=Math.abs((Math.round(anynum*divider)/divider));
workStr=""+workNum
if (workStr.indexOf(".")==-1){workStr+="."}
dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
pStr=workStr.substr(workStr.indexOf("."))
while (pStr.length-1< decimal){pStr+="0"}
if(pStr =='.') pStr ='';
//--- Adds a comma in the thousands place.
if (dNum>=1000) {
dLen=dStr.length
dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
}
//-- Adds a comma in the millions place.
if (dNum>=1000000) {
dLen=dStr.length
dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
}
retval = dStr + pStr
//-- Put numbers in parentheses if negative.
if (anynum<0) {retval="("+retval+")";}
//You could include a dollar sign in the return value.
//retval = "$"+retval
obj.value = retval;
}
Usage:
Usage: <input type=text onChange='formatNumber(this,2)'>
Try it: Enter a number and tab out.
A JavaScript function to remove a cents portion from a number.
This Javascript function removes a cents portion from a number and automatically adds ".00" to the number.
function removeCents(obj){
val = obj.value;
pos = val.indexOf(".");
if(pos>-1)
str= val.substr(0,val.indexOf("."));
else
str =val;
obj.value = str+".00";
}
Usage: <input type=text onChange='removeCents(this)'>
Try it: Enter a number and tab out.
More JavaScript tips at http://www.ekcsoft.com/coding/js/
Questions or comments?