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不推荐使用