BigDecimal strategyBg = new BigDecimal(Double.valueOf(0)/100/0);
时间: 2024-10-19 12:06:53 浏览: 24
使用BigDecimal进行精确运算(实现加减乘除运算)
在Java中,当你试图创建`BigDecimal`类型的变量`strategyBg`,通过`Double.valueOf(0)`获取的是浮点数0,然后除以100再除以0,这里会遇到两个问题:
1. `Double.valueOf(0)`实际上是`NaN`(Not a Number),因为除以零在数学上是未定义的,Java中的`double`类型表示这种非法运算会得到`NaN`。
2. 尝试对`NaN`进行算术运算(如除法)通常会产生不可预测的结果,除非你特别处理这种情况。
正确的做法是避免除以零或者使用`BigDecimal`的构造函数处理可能出现的`NaN`或无穷大值。如果你需要将`double`转换为`BigDecimal`并保持精度,应该直接传递给`BigDecimal`构造函数,而不是先做无效的算术运算:
```java
BigDecimal strategyBg;
try {
strategyBg = new BigDecimal(0d / 100d);
} catch (ArithmeticException e) {
strategyBg = BigDecimal.ZERO; // 或者使用其他合适的初始值
}
```
阅读全文