NumberUtils.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.jzo2o.common.utils;
  2. import cn.hutool.core.util.NumberUtil;
  3. import java.math.BigDecimal;
  4. import java.util.Comparator;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7. public class NumberUtils extends NumberUtil {
  8. /**
  9. * 如果number为空,将number转换为0,否则原数字返回
  10. *
  11. * @param number 原数值
  12. * @return 整型数字,0或原数字
  13. */
  14. public static Integer null2Zero(Integer number){
  15. return number == null ? 0 : number;
  16. }
  17. /**
  18. * 如果number为空,将number转换为0,否则原数字返回
  19. *
  20. * @param number 原数值
  21. * @return 整型数字,0或原数字
  22. */
  23. public static Double null2Zero(Double number){
  24. return number == null ? 0 : number;
  25. }
  26. /**
  27. * 如果是空值,返回默认数据;如果有值直接返回
  28. * @param number
  29. * @param defaultNumber
  30. * @return
  31. */
  32. public static double null2Default(Double number, double defaultNumber) {
  33. return number == null ? defaultNumber : number;
  34. }
  35. /**
  36. * 如果number为空,将number转换为0L,否则原数字返回
  37. *
  38. * @param number 原数值
  39. * @return 长整型数字,0L或原数字
  40. */
  41. public static Long null2Zero(Long number){
  42. return number == null ? 0L : number;
  43. }
  44. public static Double setScale(Double number) {
  45. return new BigDecimal(number)
  46. .setScale(2, BigDecimal.ROUND_HALF_UP)
  47. .doubleValue();
  48. }
  49. /**
  50. * 比较两个数字是否相同,
  51. * @param number1 数值1
  52. * @param number2 数值2
  53. * @return 是否一致
  54. */
  55. public static boolean equals(Integer number1, Integer number2) {
  56. if(number1 == null || number2 == null){
  57. return false;
  58. }
  59. return number1.equals(number2);
  60. }
  61. /**
  62. * 数字除法保留指定小数位
  63. * @param num1 被除数
  64. * @param num2 除数
  65. * @param scale 小数点位数
  66. * @return 结果
  67. */
  68. public static Double divToDouble(Integer num1, Integer num2, int scale){
  69. if(num2 == null || num2 ==0 || num1 == null || num1 == 0) {
  70. return 0d;
  71. }
  72. return div(num1, num2, scale).doubleValue();
  73. }
  74. public static Double max(List<Double> data){
  75. if(CollUtils.isEmpty(data)){
  76. return null;
  77. }
  78. return data.stream()
  79. .max(Comparator.comparingDouble(num -> num))
  80. .orElse(0d);
  81. }
  82. public static Double min(List<Double> data){
  83. if(CollUtils.isEmpty(data)){
  84. return null;
  85. }
  86. return data.stream()
  87. .min(Comparator.comparingDouble(num -> num))
  88. .orElse(0d);
  89. }
  90. public static Double average(List<Double> data){
  91. if(CollUtils.isEmpty(data)){
  92. return 0d;
  93. }
  94. return data.stream()
  95. .collect(Collectors.averagingDouble(Double::doubleValue));
  96. }
  97. public static Integer toInt(Object obj) {
  98. return obj == null ? null
  99. : obj instanceof Integer
  100. ? (int) obj : null;
  101. }
  102. /**
  103. * 取绝对值,如果为null,返回0
  104. * @param number 数值
  105. * @return 绝对值
  106. */
  107. public static int abs(Integer number) {
  108. return number == null
  109. ? 0
  110. : Math.abs(number);
  111. }
  112. /**
  113. * 数字格式化字符串,不足位数补0
  114. *
  115. * @param originNumber 原始数字
  116. * @param digit 数字位数
  117. * @return 字符串
  118. */
  119. public static String repair0(Integer originNumber, Integer digit){
  120. StringBuilder number = new StringBuilder(originNumber + "");
  121. while (number.length() < digit) {
  122. number.insert(0, "0");
  123. }
  124. return number.toString();
  125. }
  126. public static Integer null2Default(Integer originNumber, int defaultNumber) {
  127. return originNumber == null ? defaultNumber : originNumber;
  128. }
  129. public static Long null2Default(Long originNumber, long defaultNumber) {
  130. return originNumber == null ? defaultNumber : originNumber;
  131. }
  132. }