Merge branch 'dev/0.8_dataBridge2' into dev/0.9_cockpit

This commit is contained in:
zhugongping 2026-08-04 18:55:47 +08:00
commit 59a1f8dc61

View File

@ -8,6 +8,7 @@ import java.io.ByteArrayInputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -101,14 +102,14 @@ public class CalculateUtils {
case '*': case '*':
return a.multiply(b); return a.multiply(b);
case '/': case '/':
return a.divide(b); return a.divide(b, 6, RoundingMode.HALF_UP);
case '%': case '%':
// 取余,如果不包含小数点,下面length处理会报错,这里做个处理 // 取余,如果不包含小数点,下面length处理会报错,这里做个处理
if (!b.toString().contains(".0")) { if (!b.toString().contains(".0")) {
b = new BigDecimal(b + ".0"); b = new BigDecimal(b + ".0");
} }
int length = b.toString().split("\\.")[1].length(); 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 '^': case '^':
// 幂运算:a的b次方 // 幂运算:a的b次方
double result = Math.pow(a.doubleValue(), b.doubleValue()); double result = Math.pow(a.doubleValue(), b.doubleValue());
@ -368,7 +369,7 @@ public class CalculateUtils {
*/ */
public static String parseValue(String dataType, String hexString) { public static String parseValue(String dataType, String hexString) {
String value = ""; String value = "";
Long val = Long.parseLong(hexString, 16); long val = Long.parseLong(hexString, 16);
byte[] bytes = ByteBufUtil.decodeHexDump(hexString); byte[] bytes = ByteBufUtil.decodeHexDump(hexString);
if (StringUtils.isNotEmpty(dataType)) { if (StringUtils.isNotEmpty(dataType)) {
ModbusDataType type = ModbusDataType.convert(dataType); ModbusDataType type = ModbusDataType.convert(dataType);