乘除法精度

2018-07-23  本文已影响0人  chenshuwen
chufaFunction: (arg1, arg2) => {
/*
* @除法精确度计算(有无小数点计算)
* @params :
*         { arg1 }除数; { arg2 } 被除数
*        { t1 }除数小数点位数 { t2} 被除数小数点位数
*@methods:
*      1)用split切割判断小数点位数
*      2)Math.pow(x, y) x的y次幂
*      3)toFixed(2) 方法可把 Number 四舍五入为指定小数位数的数字。
*      4)replace('.', ''));制定字符替换去掉小数点
* --------------有小数点处理-------------------------------------
* @主要针对小数处理
* 1)首先准化成整数做除法
* 2)其次乘以被除数减去除数差的 10的n次幂
*/
var t1 = 0, t2 = 0, r1, r2;
try {
  t1 = arg1.toString().split('.')[1].length;
} catch (e) {
  t1 = 0;
}
try {
  t2 = arg2.toString().split('.')[1].length;
} catch (e) {
  t2 = 0;
}
r1 = Number(arg1.toString().replace('.', ''));
r2 = Number(arg2.toString().replace('.', ''));
return Number(((r1 / r2) * Math.pow(10, t2 - t1)).toFixed(8));
},

chengFaFunction: (arg1, arg2) => {
/*
*@同上除法
*/
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try {
  m += s1.split('.')[1].length;
} catch (e) {
  m += 0;
}
try {
  m += s2.split('.')[1].length;
} catch (e) {
  m += 0;
}
return Number((Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m)).toFixed(8));
},
上一篇下一篇

猜你喜欢

热点阅读