Java BigDecimal
应用场景
- 适用于商业计算以及精密计算
- 可以实现加减乘除
- 可以实现精确数位的控制
- 可以实现数值间比较
常用方法
方法 | 简介 |
---|
new BigDecimal(“10.0000”) | 根据字符串创建对象,推荐使用 |
new BigDecimal(40) | 根据数字创建对象 |
BigDecimal add(BigDecimal bigDecimal) | 加法运算 |
BigDecimal subtract(BigDecimal bigDecimal) | 减法运算 |
BigDecimal multiply(BigDecimal bigDecimal) | 乘法运算 |
BigDecimal divide(BigDecimal bigDecimal, int scale, RoundingMode roundingMode) | 除法运算,可指定保留位数和规则 |
int scale() | 获取小数位数 |
BigDecimal setScale(int newScale, RoundingMode roundingMode) | 重新设置小数位数 |
int compareTo(BigDecimal val) | 比较大小:“前”大于“后”则返回 1;“前”小于“后”则返回 -1;相等则返回 0 |
BigDecimalDemo
package JavaDecimal;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal bigDecimal1 = new BigDecimal("10.0000");
BigDecimal bigDecimal2 = new BigDecimal(40);
BigDecimal bigDecimal3 = new BigDecimal("1.245");
BigDecimal add = bigDecimal1.add(bigDecimal2);
BigDecimal subtract = bigDecimal1.subtract(bigDecimal2);
BigDecimal multiply = bigDecimal1.multiply(bigDecimal2);
BigDecimal divide1 = bigDecimal1.divide(bigDecimal2, 1, RoundingMode.HALF_UP);
BigDecimal divide2 = bigDecimal1.divide(bigDecimal2, 1, RoundingMode.HALF_DOWN);
System.out.println(add);
System.out.println(subtract);
System.out.println(multiply);
System.out.println(divide1);
System.out.println(divide2);
int scale1 = bigDecimal1.scale();
int scale2 = bigDecimal2.scale();
System.out.println(scale1);
System.out.println(scale2);
BigDecimal scale3 = bigDecimal3.setScale(2, RoundingMode.HALF_UP);
BigDecimal scale4 = bigDecimal3.setScale(2, RoundingMode.HALF_DOWN);
System.out.println(scale3);
System.out.println(scale4);
System.out.println(bigDecimal1.compareTo(bigDecimal2));
System.out.println(bigDecimal2.compareTo(bigDecimal3));
System.out.println(bigDecimal1.compareTo(new BigDecimal(10)));
}
}