eachExpensesDetail.getMoney().compareTo(new BigDecimal("0.00")) == 1
时间: 2024-02-01 14:12:25 浏览: 26
这行代码的意思是比较 eachExpensesDetail.getMoney() 的值是否大于 0.00。返回值为 1 表示大于,为 0 表示等于,为 -1 表示小于。这里使用 BigDecimal 类型进行比较,是因为在 Java 中使用双精度浮点数进行比较可能会出现精度问题,而 BigDecimal 可以保证精度准确。
相关问题
BigDecimal num1 = new BigDecimal("0"); BigDecimal num2 = new BigDecimal("0.00"); if (num1.compareTo(BigDecimal.ZERO) == 0) { System.out.println("num1 is equal to 0"); } if (num2.compareTo(BigDecimal.ZERO) == 0) { System.out.println("num2 is equal to 0 or 0.00"); } 优化这段代码
可以使用BigDecimal的equals方法来比较两个BigDecimal对象是否相等,而不必使用compareTo方法:
```
BigDecimal num1 = new BigDecimal("0");
BigDecimal num2 = new BigDecimal("0.00");
if (num1.equals(BigDecimal.ZERO)) {
System.out.println("num1 is equal to 0");
}
if (num2.equals(BigDecimal.ZERO)) {
System.out.println("num2 is equal to 0 or 0.00");
}
```
此外,如果只需要判断一个BigDecimal对象是否为零,还可以使用BigDecimal的signum方法,该方法返回一个int值,表示该BigDecimal对象的符号,如果返回值为0,则表示该对象为零:
```
BigDecimal num1 = new BigDecimal("0");
BigDecimal num2 = new BigDecimal("0.00");
if (num1.signum() == 0) {
System.out.println("num1 is equal to 0");
}
if (num2.signum() == 0) {
System.out.println("num2 is equal to 0 or 0.00");
}
```
优化一下这段代码: List<BigDecimal> batteryList=new ArrayList<>(); batteryList.add(new BigDecimal("5.00")); //电池金额 batteryList.add(new BigDecimal("20.00")); BigDecimal init_couponBattery = new BigDecimal("3.00");//取绝对值 为 电池应扣金额 20 for (BigDecimal battery :batteryList){ if(init_couponBattery.compareTo(BigDecimal.ZERO) == 0){ System.out.println("应该优惠 0.00"); }else { BigDecimal a = battery.subtract(init_couponBattery);// 剩余 5 if(a.compareTo(BigDecimal.ZERO) > 0 || a.compareTo(BigDecimal.ZERO) == 0){ System.out.println("应该优惠"+ init_couponBattery);//15 init_couponBattery=new BigDecimal("0.00"); }else{ init_couponBattery = battery.subtract(init_couponBattery).abs(); //15 System.out.println("应该优惠"+ battery);//5 } } }
可以优化的点有:
1. 可以使用 Arrays.asList 方法创建列表并初始化,避免多行代码。
2. 可以将 BigDecimal.ZERO 提取出来作为一个常量,提高代码可读性。
3. 可以将 compareTo(BigDecimal.ZERO) == 0 简化为 equals(BigDecimal.ZERO)。
4. 可以将 if(a.compareTo(BigDecimal.ZERO) > 0 || a.compareTo(BigDecimal.ZERO) == 0) 简化为 if(a.signum() >= 0)。
优化后的代码如下:
```java
List<BigDecimal> batteryList = Arrays.asList(new BigDecimal("5.00"), new BigDecimal("20.00"));
BigDecimal init_couponBattery = new BigDecimal("3.00");
final BigDecimal ZERO = BigDecimal.ZERO;
for (BigDecimal battery : batteryList) {
if (init_couponBattery.equals(ZERO)) {
System.out.println("应该优惠 0.00");
} else {
BigDecimal a = battery.subtract(init_couponBattery);
if (a.signum() >= 0) {
System.out.println("应该优惠" + init_couponBattery);
init_couponBattery = ZERO;
} else {
init_couponBattery = battery.subtract(init_couponBattery).abs();
System.out.println("应该优惠" + battery);
}
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)