1.double类型
在操作double类型时,如果double大于10位,则double会自动使用科学计数法进行操作。
在进行double计算时,会出现很多位小数点。这是由于2进制和16进制转换的时候的偏度差造成的。
针对以上问题,推荐使用java.math.BigDecimal。
BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue();
在实体类中更推荐使用java.math.BigDecimal映射到数据库有小数的类型字段。
2.在对一个集合进行迭代遍历并删除一些符合条件的键值对的时候,容易出现java.util.ConcurrentModificationException 这个异常
while(parameterValues.size() != 0) { Set<Object> pv = new HashSet<Object>(); Iterator<Object> it = parameterValues.iterator(); while(it.hasNext()) { Object parameter = it.next(); it.remove(); //方法1 doEvent(parameter); pv.add(parameter); parameterValues.remove(parameter);//方法2 } parameterValues.removeAll(pv);//方法3
推荐使用方法1,3,但多线程下仍会出现此问题.待解决
方法2不推荐使用