1. /**
    2. * 加法函数,用来得到精确的加法结果
    3. * @param {Object} arg1
    4. * @param {Object} arg2
    5. */
    6. function accAdd(arg1, arg2) {
    7. var r1 = deal(arg1);
    8. var r2 = deal(arg2);
    9. var m = Math.pow(10, Math.max(r1, r2))
    10. return(arg1 * m + arg2 * m) / m
    11. }
    12. /**
    13. * 乘法函数,用来得到精确的乘法结果
    14. * @param {Object} arg1
    15. * @param {Object} arg2
    16. */
    17. function accMul(arg1, arg2) {
    18. var m = 0;
    19. m += deal(arg1);
    20. m += deal(arg2);
    21. var r1 = Number(arg1.toString().replace(".", ""));
    22. var r2 = Number(arg2.toString().replace(".", ""));
    23. return(r1 * r2) / Math.pow(10, m)
    24. }
    25. /**
    26. * 除法函数,用来得到精确的除法结果
    27. * @param {Object} arg1
    28. * @param {Object} arg2
    29. */
    30. function accDiv(arg1, arg2) {
    31. var t1 = deal(arg1);
    32. var t2 = deal(arg2);
    33. var r1 = Number(arg1.toString().replace(".", ""))
    34. var r2 = Number(arg2.toString().replace(".", ""))
    35. return(r1 / r2) * Math.pow(10, t2 - t1);
    36. }
    37. /**
    38. * 求小数点后的数据长度
    39. */
    40. function deal(arg) {
    41. var t = 0;
    42. try {
    43. t = arg.toString().split(".")[1].length
    44. } catch(e) {}
    45. return t;
    46. }