网站地图    收藏   

主页 > 前端 > javascript >

JavaScript中的四舍五入函数小结方法

来源:自学PHP网    时间:2014-09-19 14:48 作者: 阅读:

[导读] 在js中四舍五入函数有很多,如有toFixed,Math.round()与Math.pow()等等函数,下面本文章主要是介绍toFixed,Math.round()与Math.pow()这四个函数,有兴趣的朋友不要错过了。...

之前,我是一个JavaScript小白,对jQuery的理解也仅限于基本功能的使用。最近在看《JavaScript DOM编程艺术》,算是在自学一点儿基础知识。实例中有一个函数需要对结果进行四舍五入,保留小数点后一位数字。然后就查阅了W3School的参考文档,发现Number对象有一个toFixed()方法,完全符合我的要求。

toFixed(num)只有一个参数num,用来规定需要保留的小数位数,111cn.net取值在0~20之间,超出这个范围则抛出异常。当然,如果调用这个方法的对象不是一个Number时也会抛出异常。

 代码如下 复制代码

var num = 10/3;
alert(num.toFixed(2));


执行上面的代码,可以看到输出的结果是3.33

num参数可以省略,如果省略的话,默认将用0代替,即四舍五入为整数。

值得注意的是,toFixed方法在不同浏览器下表现可能会有差异。比如

 代码如下 复制代码

var money=0.00542;//0.006;
alert(Number(money).toFixed(2));
//在IE6~7中为0.00


显然,这个方法是需要改进的。用Math对象的Round方法写一个函数即可解决。

 代码如下 复制代码
//对数值进行四舍五入的函数
function roundNum(number,fDigits){  
    with(Math){  
        return round(number*pow(10,fDigits))/pow(10,fDigits);  
    }  
}
//用roundNum函数对数值进行四舍五入操作
function showNum() {
    var num = 0.006;
    alert(roundNum(num,2));
}

 
执行上面的代码后我们可以看到,输出的结果是0.01,是正确的。round方法是返回与给出的数值表达式最接近的整数。如果 number 的小数部分大于等于 0.5,返回值是大于 number 的最小整数。否则,round 返回小于等于 number 的最大整数。

Math.round()与Math.pow()

 

 代码如下 复制代码

<script type="text/javascript">
//Math.round(x);返回数字最接近的整数,四舍五入取整数,即舍去小数部分
function f(){
alert(Math.round(123.567));
alert(Math.round(123.456));
}
//Math.pow(x,y);返回底数的指定次幂
//返回以x的y次幂,等同于x的y次幂的数值表达式
//如果pow的参数过大而引起浮点溢出,www.111cn.Net返回Infinity
function f1(){
alert(Math.pow(2,10));//2的10次方等于1024
alert(Math.pow(1024,0.1));//1024的0.1次方等于2
alert(Math.pow(99,9999));//溢出则返回Infinity
}
/*Javascript设置要保留的小数位数,四舍五入。
*ForDight(Dight,How):数值格式化函数,Dight要格式化的 数字,How要保留的小数位数。
*这里的方法是先乘以10的倍数,然后去掉小数,最后再除以10的倍数。
*/
function ForDight(Dight,How){
Dight = Math.round(Dight*Math.pow(10,How))/Math.pow(10,How);
return Dight;
}
function f2(){
alert(ForDight(12345.67890,3));//保留三位小数
alert(ForDight(123.99999,4));//保留四位小数
}
//另外一种四舍五入的方法,原理一样。
//里面的两个参数:num就是要转换的数据。n为要转换的位数
//cheng(123.456,2);//保留两位小数
function cheng(num,n){
var dd=1;
var tempnum;
for(i=0;i<n;i++){
dd*=10;
}
tempnum = num*dd;
tempnum = Math.round(tempnum);
alert(tempnum/dd);
}
</script>

<input type="button" value="round" onclick="f();" />
<input type="button" value="pow" onclick="f1();" />
<input type="button" value="设置要保留的小数位数,四舍五入" onclick="f2();" />
<input type="button" value="cheng" onclick="cheng(123.456,2);" />

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论