• js浮点数相加、减、乘、除精确计算


    js 浮点数计算时 ,无缘无辜 后边冒出一堆 小数点………… 貌似js本身的问题,类型不定??????

    只能自己写函数处理。。  http://blog.csdn.net/w4bobo/article/details/9143663 借鉴一下 

    1 //调用:accAdd(arg1,arg2)  
    2 //返回值:arg1加上arg2的精确结果  
    3 function accAdd(arg1,arg2){  
    4     var r1,r2,m;  
    5     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}  
    6     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}  
    7     m=Math.pow(10,Math.max(r1,r2))  
    8     return (arg1*m+arg2*m)/m  
    9 }
    //说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。  
    //调用:accSub(arg1,arg2)  
    //返回值:arg1减上arg2的精确结果  
    function accSub(arg1,arg2){      
        return accAdd(arg1,-arg2);  
    }
    //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。  
    //调用:accMul(arg1,arg2)  
    //返回值:arg1乘以arg2的精确结果  
    function accMul(arg1,arg2)  
    {  
        var m=0,s1=arg1.toString(),s2=arg2.toString();  
        try{m+=s1.split(".")[1].length}catch(e){}  
        try{m+=s2.split(".")[1].length}catch(e){}  
        return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)  
    }
    //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。  
    //调用:accDiv(arg1,arg2)  
    //返回值:arg1除以arg2的精确结果  
    function accDiv(arg1,arg2){  
        var t1=0,t2=0,r1,r2;  
        try{t1=arg1.toString().split(".")[1].length}catch(e){}  
        try{t2=arg2.toString().split(".")[1].length}catch(e){}  
        with(Math){  
            r1=Number(arg1.toString().replace(".",""))  
            r2=Number(arg2.toString().replace(".",""))  
            return (r1/r2)*pow(10,t2-t1);  
        }  
    }
  • 相关阅读:
    面向对象案例
    Leetcode--9. 回文数
    调试seanbell/intrinsic遇到的坑
    Ubuntu16.04OPENGL初体验
    Ubuntu16.04重装NVIDIA驱动
    C++之封装继承和多态
    CMKAE简单实用指南
    【学习笔记】C/C++
    C++之重载覆盖和隐藏
    C++之指针和引用
  • 原文地址:https://www.cnblogs.com/lengp/p/4166812.html
Copyright © 2020-2023  润新知