CommonUtil.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package cn.efunbox.manage.base.util;
  2. import org.apache.commons.lang3.StringUtils;
  3. import java.math.BigDecimal;
  4. import java.text.DecimalFormat;
  5. public class CommonUtil {
  6. /**
  7. * 除法
  8. */
  9. public static BigDecimal divide(String arg1, String arg2) {
  10. if (StringUtils.isEmpty(arg1)) {
  11. arg1 = "0.0";
  12. }
  13. if (StringUtils.isEmpty(arg2)) {
  14. arg2 = "0.0";
  15. }
  16. BigDecimal big3 = new BigDecimal("0.00");
  17. if (Double.parseDouble(arg2) != 0) {
  18. BigDecimal big1 = new BigDecimal(arg1);
  19. BigDecimal big2 = new BigDecimal(arg2);
  20. big3 = big1.divide(big2, 2, BigDecimal.ROUND_HALF_EVEN);
  21. }
  22. return big3;
  23. }
  24. /**
  25. * 乘法
  26. */
  27. public static BigDecimal mul(String arg1, String arg2) {
  28. if (StringUtils.isEmpty(arg1)) {
  29. arg1 = "0.0";
  30. }
  31. if (StringUtils.isEmpty(arg2)) {
  32. arg2 = "0.0";
  33. }
  34. BigDecimal big1 = new BigDecimal(arg1);
  35. BigDecimal big2 = new BigDecimal(arg2);
  36. BigDecimal big3 = big1.multiply(big2);
  37. return big3;
  38. }
  39. /**
  40. * 减法
  41. */
  42. public static BigDecimal sub(String arg1, String arg2) {
  43. if (StringUtils.isEmpty(arg1)) {
  44. arg1 = "0.0";
  45. }
  46. if (StringUtils.isEmpty(arg2)) {
  47. arg2 = "0.0";
  48. }
  49. BigDecimal big1 = new BigDecimal(arg1);
  50. BigDecimal big2 = new BigDecimal(arg2);
  51. BigDecimal big3 = big1.subtract(big2);
  52. return big3;
  53. }
  54. /**
  55. * 加法
  56. */
  57. public static BigDecimal add(String arg1, String arg2) {
  58. if (StringUtils.isEmpty(arg1)) {
  59. arg1 = "0.0";
  60. }
  61. if (StringUtils.isEmpty(arg2)) {
  62. arg2 = "0.0";
  63. }
  64. BigDecimal big1 = new BigDecimal(arg1);
  65. BigDecimal big2 = new BigDecimal(arg2);
  66. BigDecimal big3 = big1.add(big2);
  67. return big3;
  68. }
  69. /**
  70. * 加法
  71. */
  72. public static String add2(String arg1, String arg2) {
  73. if (StringUtils.isEmpty(arg1)) {
  74. arg1 = "0.0";
  75. }
  76. if (StringUtils.isEmpty(arg2)) {
  77. arg2 = "0.0";
  78. }
  79. BigDecimal big1 = new BigDecimal(arg1);
  80. BigDecimal big2 = new BigDecimal(arg2);
  81. BigDecimal big3 = big1.add(big2);
  82. return big3.toString();
  83. }
  84. /**
  85. * 四舍五入保留N位小数 先四舍五入在使用double值自动去零
  86. *
  87. * @param arg
  88. * @param scare
  89. * 保留位数
  90. * @return
  91. */
  92. public static String setScare(BigDecimal arg, int scare) {
  93. BigDecimal bl = arg.setScale(scare, BigDecimal.ROUND_HALF_UP);
  94. return String.valueOf(bl.doubleValue());
  95. }
  96. public static double setDifScare(double arg) {
  97. BigDecimal bd = new BigDecimal(arg);
  98. BigDecimal bl = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
  99. return Double.parseDouble(bl.toString());
  100. }
  101. /**
  102. * 四舍五入保留两位小数 先四舍五入在使用double值自动去零
  103. *
  104. * @param arg
  105. * @return
  106. */
  107. public static String setDifScare(String arg) {
  108. BigDecimal bd = new BigDecimal(arg);
  109. BigDecimal bl = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
  110. return bl.toString();
  111. }
  112. /**
  113. * 四舍五入保留N位小数 先四舍五入在使用double值自动去零(传参String类型)
  114. *
  115. * @param arg
  116. * @return
  117. */
  118. public static String setDifScare(String arg, int i) {
  119. BigDecimal bd = new BigDecimal(arg);
  120. BigDecimal bl = bd.setScale(i, BigDecimal.ROUND_HALF_UP);
  121. return bl.toString();
  122. }
  123. /**
  124. * 转化成百分数 先四舍五入在使用double值自动去零
  125. *
  126. * @param arg
  127. * @return
  128. */
  129. public static String setFenScare(BigDecimal arg) {
  130. BigDecimal bl = arg.setScale(3, BigDecimal.ROUND_HALF_UP);
  131. String scare = String.valueOf(mul(bl.toString(), "100").doubleValue());
  132. String fenScare = scare + "%";
  133. return fenScare;
  134. }
  135. /**
  136. * 使用java正则表达式去掉多余的.与0
  137. *
  138. * @param s
  139. * @return
  140. */
  141. public static String subZeroAndDot(String s) {
  142. if (s.indexOf(".") > 0) {
  143. s = s.replaceAll("0+?$", "");// 去掉多余的0
  144. s = s.replaceAll("[.]$", "");// 如最后一位是.则去掉
  145. }
  146. return s;
  147. }
  148. /**
  149. * 元转分,确保price保留两位有效数字
  150. * @return
  151. */
  152. public static long changeY2F(double price) {
  153. DecimalFormat df = new DecimalFormat("#.00");
  154. price = Double.valueOf(df.format(price));
  155. long money =(long) price * 100;
  156. return money;
  157. }
  158. /**
  159. * 分转元,转换为bigDecimal在toString
  160. * @return
  161. */
  162. public static String changeF2Y(long price) {
  163. return BigDecimal.valueOf(price).divide(new BigDecimal(100)).toString();
  164. }
  165. /**
  166. * 如果只是用于程序中的格式化数值然后输出,那么这个方法还是挺方便的。
  167. * 应该是这样使用:System.out.println(String.format("%.2f", d));
  168. * @param d
  169. * @return
  170. */
  171. public static String formatDouble(double d) {
  172. return String.format("%.2f", d);
  173. }
  174. }