解决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
简单的小函数,只做了+ 、- 、* 、/四则运算,第一、二个参数为参与运算的两个数,第三个参数为运算符(+-*/),
思路是运算前用字符串处理拿掉 '.' ,运算结束后还原倍数。
下一篇: 超逗的男女笑段,笑脸相迎