Skip to content

compareTo比较

项目:misszb/OrderServiceImpl

概念

compareTo用于俩个值的比较,返回值是整型

A.compareTo(B)

如果A等于B,返回0

如果A小于B,返回负数

如果A大于B,返回正数

需求

判断订单金额是否大于等于0

可以使用校验@DecimalMin,也可以使用compareTo进行判断

实现

java
public void isOk(Long uid, OrderDTO orderDTO) {
        if (orderDTO.getFinalTotalPrice().compareTo(new BigDecimal("0")) <= 0) {
            throw new ParameterException(50011);
        }
    }

orderDTO.getFinalTotalPrice()获取FinalTotalPrice(总价)的值

new BigDecimal("0") 因为OrderDTO中的FinalTotalPrice格式是BigDecimal,所以需要与BigDecimal格式的0进行对比

对比返回的值如果小于等于0,说明总价不对,返回错误提示

总结

第一、俩个值的对比可以使用compareTo进行比较

第二、new BigDecimal为什么要传入Sting?

BigDecimal构造器传参时使用String不会丢失精度,使用浮点或者双精度会丢失精度。

如有转载或 CV 的请标注本站原文地址