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); |
||
---|---|---|
.. | ||
charles7c/cnadmin/common |