digital.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. let digital = {}
  2. //浮点数相加
  3. digital.floatAdd = (arg1, arg2) => {
  4. var r1, r2, m;
  5. try {
  6. r1 = arg1.toString().split(".")[1].length
  7. } catch (e) {
  8. r1 = 0
  9. }
  10. try {
  11. r2 = arg2.toString().split(".")[1].length
  12. } catch (e) {
  13. r2 = 0
  14. }
  15. m = Math.pow(10, Math.max(r1, r2));
  16. return (arg1 * m + arg2 * m) / m;
  17. },
  18. //浮点数相减
  19. digital.floatSub = (arg1, arg2) => {
  20. var r1, r2, m, n;
  21. try {
  22. r1 = arg1.toString().split(".")[1].length
  23. } catch (e) {
  24. r1 = 0
  25. }
  26. try {
  27. r2 = arg2.toString().split(".")[1].length
  28. } catch (e) {
  29. r2 = 0
  30. }
  31. m = Math.pow(10, Math.max(r1, r2));
  32. n = (r1 >= r2) ? r1 : r2;
  33. return ((arg1 * m - arg2 * m) / m).toFixed(n)
  34. },
  35. //浮点数相乘
  36. digital.floatMul=(arg1, arg2)=> {
  37. var m = 0;
  38. var s1 = arg1.toString();
  39. var s2 = arg2.toString();
  40. try {
  41. m += s1.split(".")[1].length;
  42. } catch (e) {}
  43. try {
  44. m += s2.split(".")[1].length;
  45. } catch (e) {}
  46. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  47. },
  48. //四舍五入保留2位小数(不够位数,则用0替补)
  49. digital.keepTwoDecimalFull = num => {
  50. var result = parseFloat(num)
  51. if (isNaN(result)) {
  52. return false
  53. }
  54. result = Math.round(num * 100) / 100
  55. var s_x = result.toString()
  56. var pos_decimal = s_x.indexOf('.')
  57. if (pos_decimal < 0) {
  58. pos_decimal = s_x.length
  59. s_x += '.'
  60. }
  61. while (s_x.length <= pos_decimal + 2) {
  62. s_x += '0'
  63. }
  64. return s_x
  65. }
  66. export default digital