以下是个人封装的js方法,包括:
乘、除、加、减、保留小数数位
废话不多说,上代码~~~~~
// 自己实现
const toFixedSelf = (num, n) => {
if (num < 0) {
num = -num;
return (parseInt(num * Math.pow(10, n) + 0.5, 10) / Math.pow(10, n)) * -1;
} else {
return parseInt(num * Math.pow(10, n) + 0.5, 10) / Math.pow(10, n);
}
};
// 两个浮点数求和
const Add = (num1, num2) => {
let r1;
let r2;
try {
r1 = `${num1}`.split('.')[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = `${num2}`.split('.')[1].length;
} catch (e) {
r2 = 0;
}
const m = Math.pow(10, Math.max(r1, r2));
return Math.round(num1 * m + num2 * m) / m;
};
// 两个浮点数相减
const Sub = (num1, num2) => {
let r1;
let r2;
try {
r1 = `${num1}`.split('.')[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = `${num2}`.split('.')[1].length;
} catch (e) {
r2 = 0;
}
const m = Math.pow(10, Math.max(r1, r2));
const n = r1 >= r2 ? r1 : r2;
return toFixedSelf(Math.round(num1 * m - num2 * m) / m, n);
};
// 两个浮点数相乘
const Mul = (num1, num2) => {
let m = 0;
const s1 = `${num1}`;
const s2 = `${num2}`;
try {
m += s1.split('.')[1].length;
} catch (e) {
m = 0;
}
try {
m += s2.split('.')[1].length;
} catch (e) {
m = m;
}
return (
(Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) /
Math.pow(10, m)
);
};
// 两个浮点数相除
const Div = (num1, num2) => {
let t1;
let t2;
try {
t1 = `${num1}`.split('.')[1].length;
} catch (e) {
t1 = 0;
}
try {
t2 = `${num2}`.toString().split('.')[1].length;
} catch (e) {
t2 = 0;
}
const r1 = Number(`${num1}`.replace('.', ''));
const r2 = Number(`${num2}`.toString().replace('.', ''));
return (r1 / r2) * Math.pow(10, t2 - t1);
};
export default {
toFixedSelf,
Add,
Sub,
Mul,
Div
};
记录一哈。