JS在处理浮点数计算时经常会遇到精度的问题,上一篇博客封装了JS浮点数加减法的方法,这一次来封装一下js浮点数乘除法运算。
其实浮点除法的封装跟加减法的封装原理是一样,只是在第一次计算完后会再复位小数位数的时候稍微会复杂一点。
加法运算在第一次清除小数点计算后,根据小数位数的最大值可以知道计算后的结果应该再复位多少位小数。
而乘除法运算得分二种情况:
乘法运算时,二个数去掉小数点,相当于放大了10的对应二数小数点位数的和的次幂,所以计算完后的结果应该保留至少对应小数位数的和的位数;
除法运算时,二个数去掉小数点,相当于乘上了10的(被除数的小数位数-除数的小们数)次幂,如果被除数的小数位数-除数的小位数大于0则是小数增加对应位,如果是小于0则小数位数减少对应位
代码如下
//浮点数乘除法 function muldivfloat(num0,num1,bzstr){ var ln0=getws(num0),//第一个值的的小数位数 ln1=getws(num1),//第二个值的的小数位数 lnz=Math.max(ln0,ln1),//取得小数位数中的最大数 lncz,//小数位数的统计值 num0str,//第一个值数字转字符 num1str,