Commit 89d8aa075166f2e522f380546f9fa4b5598f4fbe

Authored by yanglang
1 parent c95dd66f

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

src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java
1 package com.irrigation.icl.utils; 1 package com.irrigation.icl.utils;
2 2
  3 +import com.irrigation.icl.exception.ContextRuntimeException;
  4 +
3 import java.math.BigDecimal; 5 import java.math.BigDecimal;
4 import java.util.Optional; 6 import java.util.Optional;
5 7
@@ -8,10 +10,10 @@ import java.util.Optional; @@ -8,10 +10,10 @@ import java.util.Optional;
8 * @Author: yangLang 10 * @Author: yangLang
9 * @CreateDate: 2020/4/29 16:09 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 private final static int SCALE = 4; 18 private final static int SCALE = 4;
17 19
@@ -23,7 +25,7 @@ public class DoubleValueUtils { @@ -23,7 +25,7 @@ public class DoubleValueUtils {
23 * 25 *
24 * @param value 加数 26 * @param value 加数
25 * @param addValue 被加数 27 * @param addValue 被加数
26 - * @return 返回结果四舍五入,保留4小数 28 + * @return 返回结果四舍五入,保留4小数
27 * @Author: yangLang 29 * @Author: yangLang
28 */ 30 */
29 public static double doubleAdd(Double value, Double addValue) { 31 public static double doubleAdd(Double value, Double addValue) {
@@ -35,50 +37,127 @@ public class DoubleValueUtils { @@ -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 * @param value 减数 59 * @param value 减数
41 - * @param addValue 被减数  
42 - * @return 返回结果四舍五入,保留4为小数 60 + * @param subValue 被减数
  61 + * @return 返回结果四舍五入,保留4位小数
43 * @Author: yangLang 62 * @Author: yangLang
44 */ 63 */
45 - public static double doubleSub(Double value, Double addValue) { 64 + public static double doubleSub(Double value, Double subValue) {
46 value = Optional.ofNullable(value).orElse(0.0); 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 .setScale(SCALE, BigDecimal.ROUND_HALF_UP) 68 .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
50 .doubleValue(); 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 * @param value 乘数 92 * @param value 乘数
57 - * @param addValue 被乘数  
58 - * @return 返回结果四舍五入,保留4为小数 93 + * @param mutValue 被乘数
  94 + * @return 返回结果四舍五入,保留4位小数
59 * @Author: yangLang 95 * @Author: yangLang
60 */ 96 */
61 - public static double doubleMulti(Double value, Double addValue) { 97 + public static double doubleMulti(Double value, Double mutValue) {
62 value = Optional.ofNullable(value).orElse(0.0); 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 .setScale(SCALE, BigDecimal.ROUND_HALF_UP) 101 .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
66 .doubleValue(); 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 * @param value 除数 125 * @param value 除数
73 - * @param addValue 被除数  
74 - * @return 返回结果四舍五入,保留4为小数 126 + * @param divValue 被除数
  127 + * @return 返回结果四舍五入,保留4位小数
75 * @Author: yangLang 128 * @Author: yangLang
76 */ 129 */
77 - public static double doubleDiv(Double value, Double addValue) { 130 + public static double doubleDiv(Double value, Double divValue) {
78 value = Optional.ofNullable(value).orElse(0.0); 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 .setScale(SCALE, BigDecimal.ROUND_HALF_UP) 134 .setScale(SCALE, BigDecimal.ROUND_HALF_UP)
82 .doubleValue(); 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 }