js 实现四舍五入&fixed方法异常处理

本文介绍了JavaScript中toFixed方法的使用及其局限性,当保留小数位数超过20时会出现错误。文中提供了两种解决方案:一是重写Number类型中的toFixed方法;二是利用Math.round函数实现自定义的四舍五入功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS四舍五入的函数:toFixed(n),n为要保留的小数位数,n取0~20。

问题:当n超过20的时候,JS会出错。

举例一:

var d = 10.005;
var f = d.toFixed(2);
alert(f);

输出结果:10.01

举例二:

var h = 0.007;
h.toFixed(2);
alert(h);

输出结果:0.00

解决方案:

(一)对JS中的Number类型的toFixed方法重写。

Number.prototype.toFixed = function(s) {  
   var changenum = (parseInt(this * Math.pow(10, s) + 0.5) / Math.pow(10, s)).toString();  
   index = changenum.indexOf(".");  
   if (index < 0 && s > 0) {  
      changenum = changenum + ".";  
      for (i = 0; i < s; i++) {  
          changenum = changenum + "0";  
      }  
    } else {  
      index = changenum.length - index;  
      for (i = 0; i < (s - index) + 1; i++) {  
          changenum = changenum + "0";  
      }  
    }  
    return changenum;  
}  

(二)利用Math.round函数:取四舍五入的整数部分

若number的小数部分大于等于0.5,返回值是大于number的最小整数;若number的小数部分小于0.5,返回值是小于等于number的最大整数;

//Number保留fractionDigits位小数
function Round4(number,fractionDigits){
   return Math.round(number*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits);
}
//函数调用
var money = 0.00542;
alert(round4(money,4));

输出结果:0.0054

转载于:https://my.oschina.net/jingyao/blog/778594

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值