JavaScript四舍五入

王朝html/css/js·作者佚名  2008-11-06
窄屏简体版  字體: |||超大  

用以下代码实现页面上javascript的四舍五入

<script>

function ForDight1(Dight,How) {

Dight =(Dight*Math.pow(10,How)/Math.pow(10,How)).toFixed(How);

return Dight;

}

function ForDight2(Dight,How) {

Dight =Math.round (Dight*Math.pow(10,How))/Math.pow(10,How);

return Dight;

}

alert(ForDight1(1067.34357,3));

alert(ForDight2(1067.34457,3));

</script>

上面的脚本执行之后,发现两个函数的结果一样,都可以进行四舍五入的处理。推荐使用第一种方式哦,因为js的计算是使用二进制的,精度有问题。使用第二种方式,在某些特殊的数字处理的时候,可能会有问题。在上例中增加alert语句,增加alert(ForDight1(69451.385,2));alert(ForDight2(69451.385,2));alert(ForDight1(69451.305,2));alert(ForDight2(69451.305,2));再运行看看结果吧...看完结果之后,相信你也会采用第一种方式来进行JS的四舍五入运算的

这样就万事大吉了?NO...不信你再试试alert(ForDight1(0.056,1)); 照理说应该是0.1,可是结果是0.0 没辙了,只能重写toFixed,代码中再增加一段

Number.prototype.toFixed=function(len)

{

var add = 0;

var s,temp;

var s1 = this + "";

var start = s1.indexOf(".");

if(s1.substr(start+len+1,1)>=5)add=1;

var temp = Math.pow(10,len);

s = Math.floor(this * temp) + add;

return s/temp;

}

好了,这样再试试 嘿嘿,没问题了吧?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航