dto.getWbsz()).setScale(2, BigDecimal.ROUND_HALF_UP) 这个功能有四舍五入还是直接截取
时间: 2024-04-05 22:34:39 浏览: 136
这个功能使用的是四舍五入。setScale(2, BigDecimal.ROUND_HALF_UP) 中的ROUND_HALF_UP参数表示使用四舍五入的方式进行舍入,保留2位小数。如果要使用直接截取的方式,可以使用ROUND_DOWN参数,例如:setScale(2, BigDecimal.ROUND_DOWN)。
相关问题
orderCreateQo.setCustomerPrice(orderCreateDto.getTotalPrice().setScale(0,BigDecimal.ROUND_HALF_UP));
这段代码的作用是将订单创建DTO中的总价值设置为订单创建查询对象中的客户价格。在这里,setScale()方法用于将总价值四舍五入到最接近的整数,并将其转换为BigDecimal类型。然后,将其设置为orderCreateQo对象的客户价格属性。这样做的目的是确保客户的价格是整数,并且避免出现小数点后面的数字。
LambdaUpdateWrapper<StatTurnoverHour> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.setSql("turnover = turnover + " + dto.getMoney()); updateWrapper.setSql("order_num = order_num + " + dto.getOrderNum()); updateWrapper.eq(StatTurnoverHour::getStoreId, dto.getStoreId()); updateWrapper.eq(StatTurnoverHour::getHourTime, dto.getHourTime()); updateWrapper.eq(StatTurnoverHour::getPayTime, dto.getPayTime());解决 BigDecimal 类型字段报错没有默认值的问题,如果turnover为空就取dto.getMoney(),不为空就执行updateWrapper.setSql("turnover = turnover + " + dto.getMoney());
你可以使用Java的三目运算符来实现这个逻辑,如下所示:
```
updateWrapper.setSql("turnover = " + (updateWrapper.getSqlSegment().contains("turnover") ? "turnover + " : "") + dto.getMoney());
```
这段代码中,首先判断`updateWrapper`对象中是否已经设置了`turnover`字段的更新语句,如果已经设置了,就在其后面加上`+ dto.getMoney()`;如果没有设置,则直接将`dto.getMoney()`赋值给`turnover`字段。这样就可以避免BigDecimal类型字段报错没有默认值的问题了。
阅读全文