NumberUtils.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /* eslint-disable no-restricted-properties */
  2. export function accAdd(arg1, arg2) {
  3. let r1;
  4. let r2;
  5. try {
  6. r1 = arg1.toFixed(2).split('.')[1].length;
  7. } catch (e) {
  8. r1 = 0;
  9. }
  10. try {
  11. r2 = arg2.toFixed(2).split('.')[1].length;
  12. } catch (e) {
  13. r2 = 0;
  14. }
  15. const m = Math.pow(10, Math.max(r1, r2));
  16. return (arg1 * m + arg2 * m) / m;
  17. }
  18. // 减法函数
  19. export function Subtr(arg1, arg2) {
  20. let r1;
  21. let r2;
  22. try {
  23. r1 = arg1.toFixed(2).split('.')[1].length;
  24. } catch (e) {
  25. r1 = 0;
  26. }
  27. try {
  28. r2 = arg2.toFixed(2).split('.')[1].length;
  29. } catch (e) {
  30. r2 = 0;
  31. }
  32. const m = Math.pow(10, Math.max(r1, r2)); // 动态控制精度长度
  33. const n = r1 >= r2 ? r1 : r2;
  34. return parseFloat(((arg1 * m - arg2 * m) / m).toFixed(n));
  35. }
  36. // 乘法函数
  37. export function accMul(arg1, arg2) {
  38. let m = 0;
  39. const s1 = arg1.toFixed(2);
  40. const s2 = arg2.toFixed(2);
  41. m += s1.split('.')[1].length;
  42. m += s2.split('.')[1].length;
  43. return (
  44. (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) /
  45. Math.pow(10, m)
  46. );
  47. }
  48. // 除法函数
  49. export function accDiv(arg1, arg2) {
  50. let t1 = 0;
  51. let t2 = 0;
  52. t1 = arg1.toFixed(2).split('.')[1].length;
  53. t2 = arg2.toFixed(2).split('.')[1].length;
  54. const r1 = Number(arg1.toFixed(2).replace('.', ''));
  55. const r2 = Number(arg2.toFixed(2).replace('.', ''));
  56. return (r1 / r2) * Math.pow(10, t2 - t1);
  57. }