if(newOrderDetail.getPrincipal0.equals(new BigDecimal(0.0))){} 这段代码有几个问题
时间: 2024-05-10 20:19:05 浏览: 5
这段代码中存在两个问题:
1. `getPrincipal0` 方法应该加上括号,变成 `getPrincipal0()`,表示调用方法而不是获取属性。
2. 使用 `equals` 方法比较 BigDecimal 类型的值可能会出现精度问题,应该使用 `compareTo` 方法进行比较。
因此,正确的写法应该是:
```
if(newOrderDetail.getPrincipal0().compareTo(BigDecimal.ZERO) == 0) {}
```
其中 `BigDecimal.ZERO` 表示值为 0 的 BigDecimal 对象。
相关问题
BigDecimal.ZERO 与bigdecimal 0.0 比较大小结果是啥
在Java中,`BigDecimal`是一种高精度的十进制浮点数表示方式,而`0.0`是普通的双精度浮点数。这两者之间是不可以直接进行比较的,因为它们的精度和表示方式不同。
如果您想比较`BigDecimal`类型的`0`和`double`类型的`0.0`,可以先将`0.0`转换成`BigDecimal`类型,然后再进行比较。例如:
```
BigDecimal zero1 = BigDecimal.ZERO;
BigDecimal zero2 = BigDecimal.valueOf(0.0);
if (zero1.compareTo(zero2) == 0) {
System.out.println("zero1 equals zero2");
} else {
System.out.println("zero1 does not equal zero2");
}
```
这段代码会输出"zero1 equals zero2",因为`BigDecimal.ZERO`和`BigDecimal.valueOf(0.0)`都表示精确的0,它们的值相等。
if(CecTypeEnum.YMT.getCode().equals(cecPlatform.getCecType())) 这段代码哪里会出现空指针异常
这段代码中可能会出现空指针异常的地方是 `cecPlatform` 对象为 null 的情况。如果 `cecPlatform` 为 null,调用 `getCecType()` 方法就会抛出空指针异常。因此,在使用这段代码之前,需要确保 `cecPlatform` 对象不为 null,或者在使用之前添加 null 判断。例如:
```java
if (cecPlatform != null && CecTypeEnum.YMT.getCode().equals(cecPlatform.getCecType())) {
// code logic here
}
```