parseFloat(numberRound)*100 = 30772.499999999996round 方法
返回与给出的数值表达式最接近的整数。Math.round(number) 必选项 number 参数是要舍入到最接近整数的值。说明
如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。
返回与给出的数值表达式最接近的整数。Math.round(number) 必选项 number 参数是要舍入到最接近整数的值。说明
如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。
var sOffsetPara = 1000000 ;
return parseFloat(parseFloat(numberRound*sOffsetPara).toFixed(roundDigit)/sOffsetPara).toFixed(roundDigit);
}TO:meizz(梅花雪) ,我是WIN2000,SP1,win2k3+IE6没问题吗?
{
Number.prototype.toFixed = function(d)
{
var s=this+"";if(s.indexOf(".")==-1)s+=".";s+=new Array(d+1).join("0");
if (new RegExp("^((-|\\+)?\\d+(\\.\\d{0,"+ (d+1) +"})?)\\d*$").test(s))
{
s="0"+ RegExp.$1, pm=RegExp.$2, a=RegExp.$3.length, b=true;
if (a==d+2){a=s.match(/\d/g); if (parseInt(a[a.length-1])>4)
{
for(var i=a.length-2; i>=0; i--) {a[i] = parseInt(a[i])+1;
if(a[i]==10){a[i]=0; b=i!=1;} else break;} //author: meizz
}
s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
}if(b)s=s.substr(1); return (pm+s).replace(/\.$/, "");} return this+"";
};
}自己写了一个修正的方法,应该可以满足你的需求了,若是你觉得系统的那个 toFixed() 方法有问题的话,你可以把我这段代码最外面的那层if判断去掉,全用自己写的这个方法!这个方法我暂时测试了一下,好象没有什么问题,不过可能测试不够,你自己再测试一下吧。
alert("50 * (61545 / 10000) = " + ( 50 * (61545 / 10000) ))
alert("50 * 61545 / 10000 = " + ( 50 * 61545 / 10000 ))
</script>
一个解决方法是,你不要直接round到4之前,而是先多round几位,再round。to meizz: 动用RegExp有点太夸张了。
http://blog.joycode.com/ghj/archive/2003/12/18/9474.aspx
var n = 0.009;
alert(n +" 系统的函数返回 "+ n.toFixed(2));
Number.prototype.toFixed = function(d)
{
var s=this+"";if(s.indexOf(".")==-1)s+=".";s+=new Array(d+1).join("0");
if (new RegExp("^((-|\\+)?\\d+(\\.\\d{0,"+ (d+1) +"})?)\\d*$").test(s))
{
s="0"+ RegExp.$1, pm=RegExp.$2, a=RegExp.$3.length, b=true;
if (a==d+2){a=s.match(/\d/g); if (parseInt(a[a.length-1])>4)
{
for(var i=a.length-2; i>=0; i--) {a[i] = parseInt(a[i])+1;
if(a[i]==10){a[i]=0; b=i!=1;} else break;}
}
s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
}if(b)s=s.substr(1); return (pm+s).replace(/\.$/, "");} return this+"";
};alert(n +" meizz的函数返回 "+ n.toFixed(2));
//-->
</SCRIPT>