From f17e7f2f30461dfda4adb5e888dd7b22a85f7540 Mon Sep 17 00:00:00 2001 From: "zhczyx@163.com" Date: Fri, 23 Jan 2026 13:15:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=95=B4=E6=95=B0=E6=9C=89=E5=B0=8F=E6=95=B0=E7=82=B9?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sender/service/KingIOServerService.java | 28 +++++++++++++------ .../sender/service/TrendLogService.java | 28 +++++++++++++------ 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/techsor/datacenter/sender/service/KingIOServerService.java b/src/main/java/com/techsor/datacenter/sender/service/KingIOServerService.java index 94e7362..2a45bda 100644 --- a/src/main/java/com/techsor/datacenter/sender/service/KingIOServerService.java +++ b/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; } // 输出数据解读 diff --git a/src/main/java/com/techsor/datacenter/sender/service/TrendLogService.java b/src/main/java/com/techsor/datacenter/sender/service/TrendLogService.java index 8cf280a..3b7d5a8 100644 --- a/src/main/java/com/techsor/datacenter/sender/service/TrendLogService.java +++ b/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; } // 输出数据解读