欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决js计算 小数加减乘除失真的功能函数

程序员文章站 2022-12-22 23:47:50
简单的小函数,只做了+ 、- 、* 、/四则运算,第一、二个参数为参与运算的两个数,第三个参数为运算符(+-*/), 思路是运算前用字符串处理拿掉 '.' ,运算结束后还原倍数。 ......
function floatpoint(one,two,str){
            //转化为字符串
            one = ''+one
            two = ''+two
            //切割成整数部分和小数部分
            var onestr = one.split('.')
            var twostr = two.split('.')
           
            
            // 处理参数一或二为整数的情况
            if(!onestr[1]){
                onestr[1] = ''
            }
            if(!twostr[1]){
                twostr[1] = ''
            }

            var length=null
             //比较小数部分的长度,以确定剥离小数点后放大的倍数
            var onefloatlength = onestr[1].length
            var twofloatlength = twostr[1].length
            if(onefloatlength>twofloatlength){
                length = onefloatlength
                twostr[1]=twostr[1].padend(length,'0')
            } else if(twofloatlength>onefloatlength){
                length = twofloatlength
                twostr[1]=onestr[1].padend(length,'0')
            } else{
                length = twofloatlength
            }
            // 拼接成处理后的数字
            var onebig = onestr[0]+onestr[1]
            var twobig = twostr[0]+twostr[1]
            
            //根据运算符决定运算后缩小的倍数
            var result=null
            switch(str){
                case '+' :;
                case '-' : result = eval(onebig+str+twobig)/(10**length)
                break;
                case '*' : result = eval(onebig+str+twobig)/(10**(length*2))
                break;
                case '/' : result = eval(onebig+str+twobig)
            }
            return result

简单的小函数,只做了+ 、- 、* 、/四则运算,第一、二个参数为参与运算的两个数,第三个参数为运算符(+-*/),

思路是运算前用字符串处理拿掉 '.' ,运算结束后还原倍数。