From dc751fc3ecd13747ba14f4656dcb295f58bcddfc Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 3 Mar 2023 23:14:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=9F=BA=E4=BA=8E?= =?UTF-8?q?=E9=98=BF=E9=87=8C=E5=B7=B4=E5=B7=B4=20Java=20=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E6=89=8B=E5=86=8C(=E9=BB=84=E5=B1=B1=E7=89=88)?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E6=96=B9=E6=B3=95=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.编程规约>OOP规约>第12条: 【强制】禁止使用构造方法 BigDecimal(double) 的方式把 double 值转化为 BigDecimal 对象。 说明:BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。 如:BigDecimal g = new BigDecimal(0.1F);实际的存储值为:0.100000001490116119384765625 正例:优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法,此方法内部其实执行了 Double 的 toString,而 Double 的 toString 按 double 的实际能表达的精度对尾数进行了截断。 BigDecimal recommend1 = new BigDecimal("0.1"); BigDecimal recommend2 = BigDecimal.valueOf(0.1); 2.编程规约>OOP规约>第19条: 【推荐】使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查, 否则会有抛 IndexOutOfBoundsException 的风险。 说明: String str = "a,b,c,,"; String[] ary = str.split(","); // 预期大于 3,结果等于 3 System.out.println(ary.length); --- .../common/config/easyexcel/ExcelBigNumberConverter.java | 2 +- .../top/charles7c/cnadmin/common/model/query/SortQuery.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBigNumberConverter.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBigNumberConverter.java index d3d22a25..6d63c1b3 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBigNumberConverter.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBigNumberConverter.java @@ -72,7 +72,7 @@ public class ExcelBigNumberConverter implements Converter { return new WriteCellData<>(str); } } - WriteCellData writeCellData = new WriteCellData<>(new BigDecimal(value)); + WriteCellData writeCellData = new WriteCellData<>(BigDecimal.valueOf(value)); writeCellData.setType(CellDataTypeEnum.NUMBER); return writeCellData; } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java index a88dcf8b..797462ee 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java @@ -65,7 +65,7 @@ public class SortQuery implements Serializable { if (StrUtil.contains(sort[0], CharConsts.COMMA)) { // e.g "sort=published,desc&sort=title,asc" for (String s : sort) { - List sortList = StrUtil.split(s, CharConsts.COMMA); + List sortList = StrUtil.splitTrim(s, CharConsts.COMMA); Sort.Order order = new Sort.Order(Sort.Direction.valueOf(sortList.get(1).toUpperCase()), sortList.get(0)); orders.add(order);