tofixed()真的能四舍五入吗??

答:不能,且tofixed在不同的浏览器下执行的结果不同。

详细原因请点击查看该博主文章

实现四舍五入:

function moneySwitch(money, precision){//precision是需要精确的位数,如百分位就是2
    var result = 0;
    //先进行一个千分位的四舍五入,保证3.0999这种情况在保留一位小数的时候能是对的,这一位可以这么做没什么问题
    var money = parseFloat(money).toFixed(3);
    try{
        var int_part = money.split(".")[0], //小数点前的整数
        point_num = money.split(".")[1],//取小数点后面的小数
        precision_num = point_num[3-precision];
        if(precision_num>4){//五入的情况
            if(precision==1){
                point_num = parseInt(point_num)+10+"";
                if(point_num.length>3){//说明往整数位进1
                    int_part = parseInt(int_part)+1+"";
                    point_num = point_num[1]+point_num[2];
                }else{
                    point_num = point_num[0]+point_num[1];
                }
                result = parseFloat(int_part+"."+point_num);
            }else if(precision==2){
                point_num = parseInt(point_num)+100+"";
                if(point_num.length>3){//说明往整数位进1
                    int_part = parseInt(int_part)+1+"";
                    point_num = point_num[1];
                }else{
                    point_num = point_num[0];
                }
                result = parseFloat(int_part+"."+point_num);
            }else if(precision==3){
                int_part = parseInt(int_part)+1+"";
                point_num = 0;
            }
            result = parseFloat(int_part+"."+point_num);
        }else{//四舍的情况
            if(precision==1){
                point_num = point_num[0]+point_num[1];
            }else if(precision==2){
                point_num = point_num[0];
            }else if(precision==3){
                point_num = 0;
            }
            result = parseFloat(int_part+"."+point_num);
        } 
    }catch(e){
        return parseFloat(money).toFixed(2);//如果过程中有出错就tofixed代替为解决
    }
    return result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值