math.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * 加法
  3. */
  4. export const add = (arg1, arg2) => {
  5. let r1, r2, m, c;
  6. try {
  7. r1 = arg1.toString().split(".")[1].length;
  8. } catch (e) {
  9. r1 = 0;
  10. }
  11. try {
  12. r2 = arg2.toString().split(".")[1].length;
  13. } catch (e) {
  14. r2 = 0;
  15. }
  16. c = Math.abs(r1 - r2);
  17. m = Math.pow(10, Math.max(r1, r2));
  18. if (c > 0) {
  19. let cm = Math.pow(10, c);
  20. if (r1 > r2) {
  21. arg1 = Number(arg1.toString().replace(".", ""));
  22. arg2 = Number(arg2.toString().replace(".", "")) * cm;
  23. } else {
  24. arg1 = Number(arg1.toString().replace(".", "")) * cm;
  25. arg2 = Number(arg2.toString().replace(".", ""));
  26. }
  27. } else {
  28. arg1 = Number(arg1.toString().replace(".", ""));
  29. arg2 = Number(arg2.toString().replace(".", ""));
  30. }
  31. return (arg1 + arg2) / m;
  32. }
  33. /**
  34. * 减法
  35. */
  36. export const subtract = (arg1, arg2) => {
  37. var r1, r2, m, n;
  38. try {
  39. r1 = arg1.toString().split(".")[1].length;
  40. } catch (e) {
  41. r1 = 0;
  42. }
  43. try {
  44. r2 = arg2.toString().split(".")[1].length;
  45. } catch (e) {
  46. r2 = 0;
  47. }
  48. m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度
  49. n = (r1 >= r2) ? r1 : r2;
  50. return ((arg1 * m - arg2 * m) / m).toFixed(n);
  51. }
  52. /**
  53. * 乘法
  54. */
  55. export const multiply = (arg1, arg2) => {
  56. var m = 0,
  57. s1 = arg1.toString(),
  58. s2 = arg2.toString();
  59. try {
  60. m += s1.split(".")[1].length;
  61. } catch (e) {}
  62. try {
  63. m += s2.split(".")[1].length;
  64. } catch (e) {}
  65. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  66. }
  67. /**
  68. * 除法
  69. */
  70. export const divide = (arg1, arg2) => {
  71. var t1 = 0,
  72. t2 = 0,
  73. r1, r2;
  74. try {
  75. t1 = arg1.toString().split(".")[1].length;
  76. } catch (e) {}
  77. try {
  78. t2 = arg2.toString().split(".")[1].length;
  79. } catch (e) {}
  80. r1 = Number(arg1.toString().replace(".", ""));
  81. r2 = Number(arg2.toString().replace(".", ""));
  82. return (r1 / r2) * Math.pow(10, t2 - t1);
  83. }