From 87204491aac135822f96f3fff297ddca400ea8c9 Mon Sep 17 00:00:00 2001
From: tangzy <tangzy123456>
Date: Wed, 20 Oct 2021 15:09:32 +0800
Subject: [PATCH] 1.山洪
---
src/main/java/org/springblade/modules/river/controller/RiverRController.java | 48 +++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/springblade/modules/river/controller/RiverRController.java b/src/main/java/org/springblade/modules/river/controller/RiverRController.java
index 460a3db..058efb4 100644
--- a/src/main/java/org/springblade/modules/river/controller/RiverRController.java
+++ b/src/main/java/org/springblade/modules/river/controller/RiverRController.java
@@ -435,8 +435,10 @@
if (selecthd.get(i).get("Q") == null) {
texta += "流量暂无数据、";
} else {
- DecimalFormat dfl = new DecimalFormat("#0.000");
- texta += "流量" + Q + "立方米每秒;";
+ //DecimalFormat dfl = new DecimalFormat("#0.000");
+ //texta += "流量" + Q + "立方米每秒;";
+ String vc = formatSignificantDigit(Q);
+ texta += "流量" + vc + "立方米每秒;";
}
}
}
@@ -652,8 +654,8 @@
if (selecthd.get(i).get("Q") == null) {
texta += "流量暂无数据";
} else {
- DecimalFormat dfs = new DecimalFormat("#0.000");
- texta += "流量" + Q + "立方米每秒;";
+ String vc = formatSignificantDigit(Q);
+ texta += "流量" + vc + "立方米每秒;";
}
}
}
@@ -679,7 +681,8 @@
texta += "流量暂无数据;";
} else {
//DecimalFormat dfs = new DecimalFormat("#0.000");
- texta += "流量" + Q + "立方米每秒;";
+ String vc = formatSignificantDigit(Q);
+ texta += "流量" + vc + "立方米每秒;";
}
}
}
@@ -708,4 +711,39 @@
return R.data(list);
}
+ public static int magnitude(Double price){
+ if (price == 0.0) {return 0;}
+ int fac;
+ Long i;
+ Long k = 10L;
+ if (price > 1) {
+ i = price.longValue();
+ fac = 0;
+ while (i / k != 0L) {
+ fac++;
+ k *= 10;
+ }
+ } else {
+ fac = -1;
+ while (price * k < 1) {
+ fac--;
+ k *= 10;
+ }
+ }
+ return fac;
+ }
+ /**
+ * 数字格式化 - 最少保留{num}位有效数字 - 保留 {min}~{max} 为小数 - format02
+ */
+ public static String formatSignificantDigit(Double price) {
+ int min = 2;
+ int max= 8;
+ int num = 3;
+ boolean sign = false;
+ Double rate = 1.0;
+ Double value = price * rate;
+ int level = magnitude(Math.abs(value));
+ int count = Math.max(min, Math.min(max, num - level - 1));
+ return String.format("%"+(sign?"+": "")+"."+count + "f", value);
+ }
}
--
Gitblit v1.9.3