From 89d8aa075166f2e522f380546f9fa4b5598f4fbe Mon Sep 17 00:00:00 2001 From: yanglang2 Date: Wed, 29 Apr 2020 17:00:01 +0800 Subject: [PATCH] feat #增加方法:指定保留位数 --- src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 97 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java b/src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java index 97d9ffd..0676e57 100644 --- a/src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java +++ b/src/main/java/com/irrigation/icl/utils/DoubleValueUtils.java @@ -1,5 +1,7 @@ package com.irrigation.icl.utils; +import com.irrigation.icl.exception.ContextRuntimeException; + import java.math.BigDecimal; import java.util.Optional; @@ -8,10 +10,10 @@ import java.util.Optional; * @Author: yangLang * @CreateDate: 2020/4/29 16:09 */ -public class DoubleValueUtils { +public final class DoubleValueUtils { /** - * 保留位数 + * 默认保留位数 */ private final static int SCALE = 4; @@ -23,7 +25,7 @@ public class DoubleValueUtils { * * @param value 加数 * @param addValue 被加数 - * @return 返回结果四舍五入,保留4为小数 + * @return 返回结果四舍五入,保留4位小数 * @Author: yangLang */ public static double doubleAdd(Double value, Double addValue) { @@ -35,50 +37,127 @@ public class DoubleValueUtils { } /** + * 计算两个浮点数之和 + * + * @param value 加数 + * @param addValue 被加数 + * @param scale 保留位数 + * @return 返回结果四舍五入,保留4位小数 + * @Author: yangLang + */ + public static double doubleAdd(Double value, Double addValue, int scale) { + value = Optional.ofNullable(value).orElse(0.0); + addValue = Optional.ofNullable(addValue).orElse(0.0); + return new BigDecimal(value.toString()).add(new BigDecimal(addValue.toString())) + .setScale(scale, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + } + + /** * 计算两个浮点数之差 * * @param value 减数 - * @param addValue 被减数 - * @return 返回结果四舍五入,保留4为小数 + * @param subValue 被减数 + * @return 返回结果四舍五入,保留4位小数 * @Author: yangLang */ - public static double doubleSub(Double value, Double addValue) { + public static double doubleSub(Double value, Double subValue) { value = Optional.ofNullable(value).orElse(0.0); - addValue = Optional.ofNullable(addValue).orElse(0.0); - return new BigDecimal(value.toString()).subtract(new BigDecimal(addValue.toString())) + subValue = Optional.ofNullable(subValue).orElse(0.0); + return new BigDecimal(value.toString()).subtract(new BigDecimal(subValue.toString())) .setScale(SCALE, BigDecimal.ROUND_HALF_UP) .doubleValue(); } /** + * 计算两个浮点数之差 + * + * @param value 减数 + * @param subValue 被减数 + * @param scale 保留位数 + * @return 返回结果四舍五入,保留4位小数 + * @Author: yangLang + */ + public static double doubleSub(Double value, Double subValue, int scale) { + value = Optional.ofNullable(value).orElse(0.0); + subValue = Optional.ofNullable(subValue).orElse(0.0); + return new BigDecimal(value.toString()).subtract(new BigDecimal(subValue.toString())) + .setScale(scale, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + } + + /** * 计算两个浮点数之积 * * @param value 乘数 - * @param addValue 被乘数 - * @return 返回结果四舍五入,保留4为小数 + * @param mutValue 被乘数 + * @return 返回结果四舍五入,保留4位小数 * @Author: yangLang */ - public static double doubleMulti(Double value, Double addValue) { + public static double doubleMulti(Double value, Double mutValue) { value = Optional.ofNullable(value).orElse(0.0); - addValue = Optional.ofNullable(addValue).orElse(0.0); - return new BigDecimal(value.toString()).multiply(new BigDecimal(addValue.toString())) + mutValue = Optional.ofNullable(mutValue).orElse(0.0); + return new BigDecimal(value.toString()).multiply(new BigDecimal(mutValue.toString())) .setScale(SCALE, BigDecimal.ROUND_HALF_UP) .doubleValue(); } /** + * 计算两个浮点数之积 + * + * @param value 乘数 + * @param mutValue 被乘数 + * @param scale 保留位数 + * @return 返回结果四舍五入,保留4位小数 + * @Author: yangLang + */ + public static double doubleMulti(Double value, Double mutValue, int scale) { + value = Optional.ofNullable(value).orElse(0.0); + mutValue = Optional.ofNullable(mutValue).orElse(0.0); + return new BigDecimal(value.toString()).multiply(new BigDecimal(mutValue.toString())) + .setScale(scale, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + } + + /** * 计算两个浮点数之商 * * @param value 除数 - * @param addValue 被除数 - * @return 返回结果四舍五入,保留4为小数 + * @param divValue 被除数 + * @return 返回结果四舍五入,保留4位小数 * @Author: yangLang */ - public static double doubleDiv(Double value, Double addValue) { + public static double doubleDiv(Double value, Double divValue) { value = Optional.ofNullable(value).orElse(0.0); - addValue = Optional.ofNullable(addValue).orElse(0.0); - return new BigDecimal(value.toString()).divide(new BigDecimal(addValue.toString())) + divValue = getDivValue(divValue); + return new BigDecimal(value.toString()).divide(new BigDecimal(divValue.toString())) .setScale(SCALE, BigDecimal.ROUND_HALF_UP) .doubleValue(); } + + /** + * 计算两个浮点数之商 + * + * @param value 除数 + * @param divValue 被除数 + * @param scale 保留位数 + * @return 返回结果四舍五入,保留4位小数 + * @Author: yangLang + */ + public static double doubleDiv(Double value, Double divValue, int scale) { + value = Optional.ofNullable(value).orElse(0.0); + divValue = getDivValue(divValue); + return new BigDecimal(value.toString()).divide(new BigDecimal(divValue.toString())) + .setScale(scale, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + } + + private static Double getDivValue(Double divValue) { + divValue = Optional.ofNullable(divValue).orElse(0.0); + if (ObjectUtils.equals(divValue, 0)) { + throw new ContextRuntimeException("被除数不能为0"); + } + return divValue; + } + } -- libgit2 0.21.4