Browse Source

修复数据解析整数有小数点的问题

zhczh_c
zhczyx@163.com 1 month ago
parent
commit
f17e7f2f30
  1. 28
      src/main/java/com/techsor/datacenter/sender/service/KingIOServerService.java
  2. 28
      src/main/java/com/techsor/datacenter/sender/service/TrendLogService.java

28
src/main/java/com/techsor/datacenter/sender/service/KingIOServerService.java

@ -20,6 +20,7 @@ import org.springframework.stereotype.Component;
import jakarta.annotation.Resource;
import java.io.IOException;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -171,15 +172,26 @@ public class KingIOServerService {
//Process the number value. keep 4 ecimal places
if (value instanceof Number) {
DecimalFormat df = new DecimalFormat("#.####"); // 保留四位小数的格式
String formatted = df.format((Number)value);
value = Double.parseDouble(formatted);
}else if (value instanceof Boolean){
if((Boolean)value==true){
value = 1;
}else{
value = 0;
Number num = (Number) value;
double d = num.doubleValue();
// 判断是否为整数(且不是无穷大或 NaN)
if (d == Math.floor(d) && !Double.isInfinite(d) && !Double.isNaN(d)) {
// 检查是否在 int 范围内
if (d >= Integer.MIN_VALUE && d <= Integer.MAX_VALUE) {
value = Integer.valueOf((int) d);
} else {
value = Integer.valueOf((int) d); // 注意:超范围会溢出!
}
} else {
// 非整数:格式化保留最多4位小数
DecimalFormat df = new DecimalFormat("#.####");
df.setRoundingMode(RoundingMode.HALF_UP);
String formatted = df.format(d);
value = Double.parseDouble(formatted);
}
} else if (value instanceof Boolean) {
value = (Boolean) value ? 1 : 0;
}
// 输出数据解读

28
src/main/java/com/techsor/datacenter/sender/service/TrendLogService.java

@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -151,15 +152,26 @@ public class TrendLogService {
//Process the number value. keep 4 ecimal places
if (value instanceof Number) {
DecimalFormat df = new DecimalFormat("#.####"); // 保留四位小数的格式
String formatted = df.format((Number)value);
value = Double.parseDouble(formatted);
}else if (value instanceof Boolean){
if((Boolean)value==true){
value = 1;
}else{
value = 0;
Number num = (Number) value;
double d = num.doubleValue();
// 判断是否为整数(且不是无穷大或 NaN)
if (d == Math.floor(d) && !Double.isInfinite(d) && !Double.isNaN(d)) {
// 检查是否在 int 范围内
if (d >= Integer.MIN_VALUE && d <= Integer.MAX_VALUE) {
value = Integer.valueOf((int) d);
} else {
value = Integer.valueOf((int) d); // 注意:超范围会溢出!
}
} else {
// 非整数:格式化保留最多4位小数
DecimalFormat df = new DecimalFormat("#.####");
df.setRoundingMode(RoundingMode.HALF_UP);
String formatted = df.format(d);
value = Double.parseDouble(formatted);
}
} else if (value instanceof Boolean) {
value = (Boolean) value ? 1 : 0;
}
// 输出数据解读

Loading…
Cancel
Save