Java BigDecimal 工具类
时间: 2023-07-03 19:25:14 浏览: 151
Java中的BigDecimal类提供了精确的十进制运算,可以避免浮点数运算精度丢失的问题。以下是一个简单的BigDecimal 工具类的示例,可以方便地进行加、减、乘、除、取反、取绝对值、比较大小等操作:
```java
import java.math.BigDecimal;
public class BigDecimalUtil {
private static final int DEFAULT_SCALE = 2; //默认保留小数点后2位
public static BigDecimal add(BigDecimal v1, BigDecimal v2) {
return v1.add(v2);
}
public static BigDecimal subtract(BigDecimal v1, BigDecimal v2) {
return v1.subtract(v2);
}
public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) {
return v1.multiply(v2);
}
public static BigDecimal divide(BigDecimal v1, BigDecimal v2) {
return v1.divide(v2, DEFAULT_SCALE, BigDecimal.ROUND_HALF_UP);
}
public static BigDecimal negate(BigDecimal v) {
return v.negate();
}
public static BigDecimal abs(BigDecimal v) {
return v.abs();
}
public static int compare(BigDecimal v1, BigDecimal v2) {
return v1.compareTo(v2);
}
public static boolean equals(BigDecimal v1, BigDecimal v2) {
return v1.compareTo(v2) == 0;
}
public static boolean greaterThan(BigDecimal v1, BigDecimal v2) {
return v1.compareTo(v2) > 0;
}
public static boolean lessThan(BigDecimal v1, BigDecimal v2) {
return v1.compareTo(v2) < 0;
}
}
```
使用示例:
```java
BigDecimal v1 = new BigDecimal("100.12");
BigDecimal v2 = new BigDecimal("80.88");
BigDecimal result = BigDecimalUtil.add(v1, v2); // 181.00
result = BigDecimalUtil.subtract(v1, v2); // 19.24
result = BigDecimalUtil.multiply(v1, v2); // 8109.6256
result = BigDecimalUtil.divide(v1, v2); // 1.24
result = BigDecimalUtil.negate(v1); // -100.12
result = BigDecimalUtil.abs(new BigDecimal("-100.12")); //100.12
int compareResult = BigDecimalUtil.compare(v1, v2); //1
boolean equalResult = BigDecimalUtil.equals(v1, v2); //false
boolean greaterThanResult = BigDecimalUtil.greaterThan(v1, v2); //true
boolean lessThanResult = BigDecimalUtil.lessThan(v1, v2); //false
```
阅读全文