参考<script> //计算n个数字的和alert(calcAdd(507000.2138,17790.474 )) alert(calcAdd(507000.2138,17790.474,1.00))function calcAdd() { var argc = arguments.length; var value = new Array();
var maxDecPoint = 0; var maxLength = 0; for(var i=0;i<argc;i++) { /* Evaluates */ value[i] = trimDecPoint(arguments[i].toString()); if (maxLength < value[i].length) { maxLength = value[i].length; }
/* Find The Location of Max Dec-Point */ var m = 0; if (value[i].lastIndexOf(".")!=-1) { m = value[i].length - 1 - value[i].lastIndexOf("."); } if (maxDecPoint < m) { maxDecPoint = m; } } /* Detecting the isFloat Parameter */ var result = 0; for(var i=0;i<argc;i++) { /* Add Zero to Max Dec-Point */ var m = 0 if (value[i].lastIndexOf(".")!=-1) { m = value[i].length - 1 - value[i].lastIndexOf("."); } if (m < maxDecPoint) { for(var k=0;k<maxDecPoint-m;k++) { value[i] = value[i].concat("0"); } }
/* Dispose the Dec-Point */ value[i] = parseInt(trimLeftZero(disposeDecPoint(value[i]))); result+=value[i]; }
/* Add the Dec-Point for Result */ result = result.toString(); var i = result.length - maxDecPoint; ret = result.substring(0,i); /* Get Integer Part */ if (maxDecPoint>0) { ret = ret.concat(".").concat(result.substring(i,result.length)); } if (ret.charAt(0)=='.') { ret = "0".concat(ret); } return ret; return trimRightZero(ret); }function trimDecPoint(value) { value = value.toString(); for(k=value.length-1;k>=0;k--) { if(value.charAt(k)!='.') { startNotDecPoint = k; break; } } if (startNotDecPoint < value.length) { value = value.substring(0,startNotDecPoint+1); } return value; }function trimRightZero(value) { value=value.toString(); var startNotZero = 0; for(k=value.length;k>1;k--) { if (value.charAt(k) != '0') { startNotZero = k; break; } } if (startNotZero<value.length) { value = value.substring(0, startNotZero); } return value; }function disposeDecPoint(value) { value = value.toString(); var i = value.lastIndexOf("."); value = value.substring(0, i).concat(value.substring(i+1, value.length)); return value; } function trimLeftZero(value) { value=value.toString(); var startNotZero = 0; for(k=0;k<value.length-1;k++) { if (value.charAt(k) != '0') { startNotZero = k; break; } } if (startNotZero>0) { value = value.substring(startNotZero, value.length); } return value; } </script>
//计算n个数字的和alert(calcAdd(507000.2138,17790.474 ))
alert(calcAdd(507000.2138,17790.474,1.00))function calcAdd() {
var argc = arguments.length;
var value = new Array();
var maxDecPoint = 0;
var maxLength = 0;
for(var i=0;i<argc;i++) {
/* Evaluates */
value[i] = trimDecPoint(arguments[i].toString());
if (maxLength < value[i].length) {
maxLength = value[i].length;
}
/* Find The Location of Max Dec-Point */
var m = 0;
if (value[i].lastIndexOf(".")!=-1) {
m = value[i].length - 1 - value[i].lastIndexOf(".");
}
if (maxDecPoint < m) {
maxDecPoint = m;
}
} /* Detecting the isFloat Parameter */
var result = 0;
for(var i=0;i<argc;i++) {
/* Add Zero to Max Dec-Point */
var m = 0
if (value[i].lastIndexOf(".")!=-1) {
m = value[i].length - 1 - value[i].lastIndexOf(".");
}
if (m < maxDecPoint) {
for(var k=0;k<maxDecPoint-m;k++) {
value[i] = value[i].concat("0");
}
}
/* Dispose the Dec-Point */
value[i] = parseInt(trimLeftZero(disposeDecPoint(value[i])));
result+=value[i];
}
/* Add the Dec-Point for Result */
result = result.toString();
var i = result.length - maxDecPoint;
ret = result.substring(0,i); /* Get Integer Part */
if (maxDecPoint>0) {
ret = ret.concat(".").concat(result.substring(i,result.length));
}
if (ret.charAt(0)=='.') {
ret = "0".concat(ret);
}
return ret; return trimRightZero(ret);
}function trimDecPoint(value) {
value = value.toString();
for(k=value.length-1;k>=0;k--) {
if(value.charAt(k)!='.') {
startNotDecPoint = k;
break;
}
}
if (startNotDecPoint < value.length) {
value = value.substring(0,startNotDecPoint+1);
}
return value;
}function trimRightZero(value) {
value=value.toString();
var startNotZero = 0;
for(k=value.length;k>1;k--) {
if (value.charAt(k) != '0') {
startNotZero = k;
break;
}
}
if (startNotZero<value.length) {
value = value.substring(0, startNotZero);
}
return value;
}function disposeDecPoint(value) {
value = value.toString();
var i = value.lastIndexOf(".");
value = value.substring(0, i).concat(value.substring(i+1, value.length));
return value;
}
function trimLeftZero(value) {
value=value.toString();
var startNotZero = 0;
for(k=0;k<value.length-1;k++) {
if (value.charAt(k) != '0') {
startNotZero = k;
break;
}
}
if (startNotZero>0) {
value = value.substring(startNotZero, value.length);
}
return value;
}
</script>
http://pub.idr.gov.cn/dujid/projects/jsfloatcalc/