BigDecimal num1 = new BigDecimal(0.1); BigDecimal num2 = new BigDecimal(0.2); BigDecimal sum = num1.add(num2);怎么改正
时间: 2023-11-04 15:52:33 浏览: 108
要在Java中正确计算浮点数的和,可以使用BigDecimal的字符串构造函数来避免精度丢失问题。以下是改正后的代码:
BigDecimal num1 = new BigDecimal("0.1");
BigDecimal num2 = new BigDecimal("0.2");
BigDecimal sum = num1.add(num2);
通过使用字符串构造函数,可以确保浮点数的精确表示,避免了使用浮点数构造函数时可能发生的舍入误差问题。
相关问题
BigDecimal num1 = new BigDecimal("0.1"); BigDecimal num2 = new BigDecimal("0.2"); BigDecimal sum = num1.add(num2);怎么改正
要正确计算浮点数的加法,可以使用`BigDecimal`类提供的方法。在上述代码中,可以使用`BigDecimal`的`valueOf`方法来创建`BigDecimal`对象,然后进行加法运算。以下是修改后的代码:
```java
BigDecimal num1 = BigDecimal.valueOf(0.1);
BigDecimal num2 = BigDecimal.valueOf(0.2);
BigDecimal sum = num1.add(num2);
```
这样就可以正确地计算出0.1加0.2的结果。
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");
}
```
阅读全文