1. 程式人生 > >記得比較的時候要用double型別比較,不要用Double,Double是引用型別用==比較不對

記得比較的時候要用double型別比較,不要用Double,Double是引用型別用==比較不對

  記得比較的時候要用double型別比較,不要用Double,Double是引用型別用==比較不對 :

//查詢未更新的返利額度  Map<返利大區-額度> preRebateMap
        List<RebateMonthRegionEntity> list = rebateRegionService.selectByRebateDiscountKey(rebateAmountBO.getId());
        Map<String, Double> preRebateMap = new HashMap<String, Double>();
        for (RebateMonthRegionEntity rebateMonthRegionEntity : list) {
            preRebateMap.put(rebateMonthRegionEntity.getRegionName(), rebateMonthRegionEntity.getDiscountAmount());
        }

        //只更新返利額度變化的資料
        List<RebateMonthRegionEntity> rebateMonthRegionEntityList = rebateAmountBO.getDenomBOList();
        int count2 = 0;
        for (RebateMonthRegionEntity rebateMonthRegionEntity : rebateMonthRegionEntityList) {
            rebateMonthRegionEntity.setUpdateUser(securityUser.getUsername());
            rebateMonthRegionEntity.setUpdateTime(new Date());
            //前臺傳來的返利額度值和資料庫中額度進行對比的不一致,進行更新。
            //注意:Double是引用型別用==比較不對 所以:Double.parseDouble(map.get(key).toString) 轉成 double 比較
            if (Double.parseDouble(preRebateMap.get(rebateMonthRegionEntity.getRegionName()).toString()) !=
                    Double.parseDouble(rebateMonthRegionEntity.getDiscountAmount().toString())) {
                logger.info("更新人:" + securityUser.getUsername() + "  更新前返利大區:【" + rebateMonthRegionEntity.getRegionName() + "】  " +
                        "更新前返利額度:【" + preRebateMap.get(rebateMonthRegionEntity.getRegionName()) + "】"+
                        "更新後返利額度:【" + rebateMonthRegionEntity.getDiscountAmount() + "】");

                count2 = rebateRegionService.updateByPrimaryKeySelective(rebateMonthRegionEntity);
            }
        }