js 加减乘除精度修复 2020-12-09

// js小数加减乘除时精度修正

export const floatObj = function () {

    //加法

    function add(a,b){

        return math.number(math.add(math.bignumber(a), math.bignumber(b))) ;

    };


    //减法

    function subtract(a,b){

        return math.number(math.subtract(math.bignumber(a), math.bignumber(b)));

    };


    // 乘法

    function multiply(a,b){

        return  math.number(math.multiply(math.bignumber(a), math.bignumber(b)));

    };


    // 除法

    function divide(a,b){

        let num

        a==0||b==0? num = 0 : num = math.number(math.divide(math.bignumber(a), math.bignumber(b)));

        return  num

    };

    //四舍五入并保留n位小数(isRound是否四舍五入)

    function fomatFloat(num,n,isRound){   

        var f = parseFloat(num);

        if(isNaN(f)){

            return false;

        }   

        f = Math.round(num*Math.pow(10, isRound?n:n+1))/Math.pow(10, isRound?n:n+1); // n 幂   

        var s = f.toString();

        var rs = s.indexOf('.');

        //判定如果是整数,增加小数点再补0

        if(rs < 0){

            rs = s.length;

            s += '.'; 

        }

        while(s.length <= rs + n){

            s += '0';

        }

        let _s = s.split(".")[0] + '.' + (s.split(".")[1].substr(0,n));        

        return Number(isRound?s:_s);

    }    

    return {

    add: add,

    subtract: subtract,

    multiply: multiply,

    divide: divide,

    fomatFloat

    }

}();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //js小数加减乘除时精度修正 exportconstfloatObj=function(){ //加法 func...
    it大東阅读 196评论 0 0
  • /*** 说明: 计算器类,共有五个方法 加 减 乘 除 次方。 可计算超大数据 使用方法 建立计算器对象...
    人气小哥阅读 1,291评论 0 1
  • 关于js浮点数计算精度不准确问题的解决办法 今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一...
    六月繁花开阅读 3,533评论 0 0
  • 一、JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加1 0.1 + 0.2 != 0.3// true ...
    a180754bf396阅读 6,707评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,578评论 16 22