Commit 89d8aa075166f2e522f380546f9fa4b5598f4fbe

Authored by yanglang
1 parent c95dd66f

feat #增加方法:指定保留位数

src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java
1 1 package com.irrigation.icl.utils;
2 2  
  3 +import com.irrigation.icl.exception.ContextRuntimeException;
  4 +
3 5 import java.math.BigDecimal;
4 6 import java.util.Optional;
5 7  
... ... @@ -8,10 +10,10 @@ import java.util.Optional;
8 10 * @Author: yangLang
9 11 * @CreateDate: 2020/4/29 16:09
10 12 */
11   -public class DoubleValueUtils {
  13 +public final class DoubleValueUtils {
12 14  
13 15 /**
14   - * 保留位数
  16 + * 默认保留位数
15 17 */
16 18 private final static int SCALE = 4;
17 19  
... ... @@ -23,7 +25,7 @@ public class DoubleValueUtils {
23 25 *
24 26 * @param value 加数
25 27 * @param addValue 被加数
26   - * @return 返回结果四舍五入,保留4小数
  28 + * @return 返回结果四舍五入,保留4小数
27 29 * @Author: yangLang
28 30 */
29 31 public static double doubleAdd(Double value, Double addValue) {
... ... @@ -35,50 +37,127 @@ public class DoubleValueUtils {
35 37 }
36 38  
37 39 /**
  40 + * 计算两个浮点数之和
  41 + *
  42 + * @param value 加数
  43 + * @param addValue 被加数
  44 + * @param scale 保留位数
  45 + * @return 返回结果四舍五入,保留4位小数
  46 + * @Author: yangLang
  47 + */
  48 + public static double doubleAdd(Double value, Double addValue, int scale) {
  49 + value = Optional.ofNullable(value).orElse(0.0);
  50 + addValue = Optional.ofNullable(addValue).orElse(0.0);
  51 + return new BigDecimal(value.toString()).add(new BigDecimal(addValue.toString()))
  52 + .setScale(scale, BigDecimal.ROUND_HALF_UP)
  53 + .doubleValue();
  54 + }
  55 +
  56 + /**
38 57 * 计算两个浮点数之差
39 58 *
40 59 * @param value 减数
41   - * @param addValue 被减数
42   - * @return 返回结果四舍五入,保留4为小数
  60 + * @param subValue 被减数
  61 + * @return 返回结果四舍五入,保留4位小数
43 62 * @Author: yangLang
44 63 */
45   - public static double doubleSub(Double value, Double addValue) {
  64 + public static double doubleSub(Double value, Double subValue) {
46 65 value = Optional.ofNullable(value).orElse(0.0);
47   - addValue = Optional.ofNullable(addValue).orElse(0.0);
48   - return new BigDecimal(value.toString()).subtract(new BigDecimal(addValue.toString()))
  66 + subValue = Optional.ofNullable(subValue).orElse(0.0);
  67 + return new BigDecimal(value.toString()).subtract(new BigDecimal(subValue.toString()))
49 68 .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
50 69 .doubleValue();
51 70 }
52 71  
53 72 /**
  73 + * 计算两个浮点数之差
  74 + *
  75 + * @param value 减数
  76 + * @param subValue 被减数
  77 + * @param scale 保留位数
  78 + * @return 返回结果四舍五入,保留4位小数
  79 + * @Author: yangLang
  80 + */
  81 + public static double doubleSub(Double value, Double subValue, int scale) {
  82 + value = Optional.ofNullable(value).orElse(0.0);
  83 + subValue = Optional.ofNullable(subValue).orElse(0.0);
  84 + return new BigDecimal(value.toString()).subtract(new BigDecimal(subValue.toString()))
  85 + .setScale(scale, BigDecimal.ROUND_HALF_UP)
  86 + .doubleValue();
  87 + }
  88 +
  89 + /**
54 90 * 计算两个浮点数之积
55 91 *
56 92 * @param value 乘数
57   - * @param addValue 被乘数
58   - * @return 返回结果四舍五入,保留4为小数
  93 + * @param mutValue 被乘数
  94 + * @return 返回结果四舍五入,保留4位小数
59 95 * @Author: yangLang
60 96 */
61   - public static double doubleMulti(Double value, Double addValue) {
  97 + public static double doubleMulti(Double value, Double mutValue) {
62 98 value = Optional.ofNullable(value).orElse(0.0);
63   - addValue = Optional.ofNullable(addValue).orElse(0.0);
64   - return new BigDecimal(value.toString()).multiply(new BigDecimal(addValue.toString()))
  99 + mutValue = Optional.ofNullable(mutValue).orElse(0.0);
  100 + return new BigDecimal(value.toString()).multiply(new BigDecimal(mutValue.toString()))
65 101 .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
66 102 .doubleValue();
67 103 }
68 104  
69 105 /**
  106 + * 计算两个浮点数之积
  107 + *
  108 + * @param value 乘数
  109 + * @param mutValue 被乘数
  110 + * @param scale 保留位数
  111 + * @return 返回结果四舍五入,保留4位小数
  112 + * @Author: yangLang
  113 + */
  114 + public static double doubleMulti(Double value, Double mutValue, int scale) {
  115 + value = Optional.ofNullable(value).orElse(0.0);
  116 + mutValue = Optional.ofNullable(mutValue).orElse(0.0);
  117 + return new BigDecimal(value.toString()).multiply(new BigDecimal(mutValue.toString()))
  118 + .setScale(scale, BigDecimal.ROUND_HALF_UP)
  119 + .doubleValue();
  120 + }
  121 +
  122 + /**
70 123 * 计算两个浮点数之商
71 124 *
72 125 * @param value 除数
73   - * @param addValue 被除数
74   - * @return 返回结果四舍五入,保留4为小数
  126 + * @param divValue 被除数
  127 + * @return 返回结果四舍五入,保留4位小数
75 128 * @Author: yangLang
76 129 */
77   - public static double doubleDiv(Double value, Double addValue) {
  130 + public static double doubleDiv(Double value, Double divValue) {
78 131 value = Optional.ofNullable(value).orElse(0.0);
79   - addValue = Optional.ofNullable(addValue).orElse(0.0);
80   - return new BigDecimal(value.toString()).divide(new BigDecimal(addValue.toString()))
  132 + divValue = getDivValue(divValue);
  133 + return new BigDecimal(value.toString()).divide(new BigDecimal(divValue.toString()))
81 134 .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
82 135 .doubleValue();
83 136 }
  137 +
  138 + /**
  139 + * 计算两个浮点数之商
  140 + *
  141 + * @param value 除数
  142 + * @param divValue 被除数
  143 + * @param scale 保留位数
  144 + * @return 返回结果四舍五入,保留4位小数
  145 + * @Author: yangLang
  146 + */
  147 + public static double doubleDiv(Double value, Double divValue, int scale) {
  148 + value = Optional.ofNullable(value).orElse(0.0);
  149 + divValue = getDivValue(divValue);
  150 + return new BigDecimal(value.toString()).divide(new BigDecimal(divValue.toString()))
  151 + .setScale(scale, BigDecimal.ROUND_HALF_UP)
  152 + .doubleValue();
  153 + }
  154 +
  155 + private static Double getDivValue(Double divValue) {
  156 + divValue = Optional.ofNullable(divValue).orElse(0.0);
  157 + if (ObjectUtils.equals(divValue, 0)) {
  158 + throw new ContextRuntimeException("被除数不能为0");
  159 + }
  160 + return divValue;
  161 + }
  162 +
84 163 }
... ...