From 7dbd571f4a5068c83318b0b8a8555d829d87916f Mon Sep 17 00:00:00 2001 From: zhugongping Date: Tue, 4 Aug 2026 07:45:02 +0800 Subject: [PATCH] =?UTF-8?q?20260804:=E9=99=A4=E6=95=B0=E5=AD=98=E5=9C=A8bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fastbee/common/utils/CalculateUtils.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fastbee-common/src/main/java/com/fastbee/common/utils/CalculateUtils.java b/fastbee-common/src/main/java/com/fastbee/common/utils/CalculateUtils.java index 5e1f0760..0d18b4e5 100644 --- a/fastbee-common/src/main/java/com/fastbee/common/utils/CalculateUtils.java +++ b/fastbee-common/src/main/java/com/fastbee/common/utils/CalculateUtils.java @@ -8,6 +8,7 @@ import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -101,14 +102,14 @@ public class CalculateUtils { case '*': return a.multiply(b); case '/': - return a.divide(b); + return a.divide(b, 6, RoundingMode.HALF_UP); case '%': // 取余,如果不包含小数点,下面length处理会报错,这里做个处理 if (!b.toString().contains(".0")) { b = new BigDecimal(b + ".0"); } int length = b.toString().split("\\.")[1].length(); - return a.divide(b, length, BigDecimal.ROUND_HALF_UP); + return a.divide(b, length, RoundingMode.HALF_UP); case '^': // 幂运算:a的b次方 double result = Math.pow(a.doubleValue(), b.doubleValue()); @@ -368,7 +369,7 @@ public class CalculateUtils { */ public static String parseValue(String dataType, String hexString) { String value = ""; - Long val = Long.parseLong(hexString, 16); + long val = Long.parseLong(hexString, 16); byte[] bytes = ByteBufUtil.decodeHexDump(hexString); if (StringUtils.isNotEmpty(dataType)) { ModbusDataType type = ModbusDataType.convert(dataType);