话不多说直接上代码:
首先,思路是把小数化为整数进行运算再变成小数
第一步:需要知道小数点后面有几位小数
function digitLength(e) {
var e1 = (e + '').split('');//把数值转为字符串,然后转为数组方便获取小数点的索引
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;//小数点后面几位
}
第二步:就是化整运算,再化为小数
加法运算:
function add(a, b) {
两种情况:一种是a小数点后面位数比较多b
var as = Math.pow(10, digitLength(a))//两个数的最小公倍数
另一种是b小数点后面位数比较多
var as2 = Math.pow(10, digitLength(b))//两个数的最小公倍数
if (digitLength(a) >= digitLength(b)) {
return (as * a + as * b) / as
} else {
return (as2 * a + as2 * b) / as2
}
function digitLength(e) {
var e1 = (e + '').split('');
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;
}
}
减法运算 (加法运算跟加法一样)
function sub(a, b) {
var as = Math.pow(10, digitLength(a))
var as2 = Math.pow(10, digitLength(b))
if (digitLength(a) >= digitLength(b)) {
return (as * a - as * b) / as
} else {
return (as2 * a - as2 * b) / as2
}
function digitLength(e) {
var e1 = (e + '').split('');
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;
}
}
乘法运算
function mul(a, b) {
var as = Math.pow(10, digitLength(a))
var as2 = Math.pow(10, digitLength(b))
if (digitLength(a) >= digitLength(b)) {
return (as * a * as * b) / as / as//这里要除以最小公倍数的平方
} else {
return (as2 * a * as2 * b) / as2 / as2
}
function digitLength(e) {
var e1 = (e + '').split('');
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;
}
}
除法运算
function bed(a, b) {
var as = Math.pow(10, digitLength(a))
var as2 = Math.pow(10, digitLength(b))
if (digitLength(a) >= digitLength(b)) {
return ((as * a) / (as * b))
} else {
return ((as2 * a) / (as2 * b))
}
function digitLength(e) {
var e1 = (e + '').split('');
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;
}
}