Math.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.cnd3b.utility;
  2. import java.math.BigDecimal;
  3. public class Math {
  4. /**
  5. * 加法
  6. *
  7. * @param arg0
  8. * @param arg1
  9. * @return
  10. */
  11. public static double add(double arg0, double arg1) {
  12. BigDecimal b1 = new BigDecimal(Double.toString(arg0));
  13. BigDecimal b2 = new BigDecimal(Double.toString(arg1));
  14. return b1.add(b2).doubleValue();
  15. }
  16. /**
  17. * 减法
  18. *
  19. * @param arg0 被减数
  20. * @param arg1 减数
  21. * @return
  22. */
  23. public static double sub(double arg0, double arg1) {
  24. BigDecimal b1 = new BigDecimal(Double.toString(arg0));
  25. BigDecimal b2 = new BigDecimal(Double.toString(arg1));
  26. return b1.subtract(b2).doubleValue();
  27. }
  28. /**
  29. * 乘法
  30. *
  31. * @param arg0
  32. * @param arg1
  33. * @return
  34. */
  35. public static double mul(double arg0, double arg1) {
  36. BigDecimal b1 = new BigDecimal(Double.toString(arg0));
  37. BigDecimal b2 = new BigDecimal(Double.toString(arg1));
  38. return b1.multiply(b2).doubleValue();
  39. }
  40. /**
  41. * 乘法
  42. *
  43. * @param arg0
  44. * @param arg1
  45. * @return
  46. */
  47. public static double mul(double arg0, double arg1, int scale) {
  48. BigDecimal b1 = new BigDecimal(Double.toString(arg0));
  49. BigDecimal b2 = new BigDecimal(Double.toString(arg1));
  50. return round(b1.multiply(b2).doubleValue(), scale);
  51. }
  52. /**
  53. * 除法,默认保留6位
  54. * @param arg0
  55. * @param arg1
  56. * @return
  57. */
  58. public static double div(double arg0, double arg1) {
  59. return div(arg0, arg1, 6);
  60. }
  61. /**
  62. * 除法
  63. *
  64. * @param arg0 被除数
  65. * @param arg1 除数
  66. * @param scale 需要精确到小数点以后几位
  67. * @return
  68. */
  69. public static double div(double arg0, double arg1, int scale) {
  70. if (scale < 0) {
  71. throw new IllegalArgumentException("精度不能小于0");
  72. }
  73. BigDecimal b1 = new BigDecimal(Double.toString(arg0));
  74. BigDecimal b2 = new BigDecimal(Double.toString(arg1));
  75. return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  76. }
  77. /**
  78. * 四舍五入处理。
  79. *
  80. * @param arg0 需要四舍五入的数字
  81. * @param scale 小数点后保留几位
  82. * @return 四舍五入后的结果
  83. */
  84. public static double round(double arg0, int scale) {
  85. if (scale < 0) {
  86. throw new IllegalArgumentException("保留位数不能小于0");
  87. }
  88. BigDecimal b = new BigDecimal(Double.toString(arg0));
  89. BigDecimal one = new BigDecimal("1");
  90. return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  91. }
  92. /**
  93. * 获取随机数
  94. * @return
  95. */
  96. public static double random() {
  97. return java.lang.Math.random();
  98. }
  99. }