BigDecimal类的概述和方法使用
A:BigDecimal的概述
由于在运算的时候,float类型和double很容易丢失精度,演示案例。
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
不可变的、任意精度的有符号十进制数。
B:构造方法
public BigDecimal(String val)
C:成员方法
public BigDecimal add(BigDecimal augend)//加
public BigDecimal subtract(BigDecimal subtrahend)//减
public BigDecimal multiply(BigDecimal multiplicand)//乘
public BigDecimal divide(BigDecimal divisor)//除法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位
// roundingMode 取舍模式 比如四舍五入
public class MyTest {
public static void main(String[] args) {
//double a=10;
//double b=3;
//System.out.println(a/b);
//如果你对精度要求特别高,那么Java也会有相应的类提供
// 构造方法
//public BigDecimal(String val)
//public BigDecimal add (BigDecimal augend)//加
//public BigDecimal subtract (BigDecimal subtrahend)//减
//public BigDecimal multiply (BigDecimal multiplicand)//乘
//public BigDecimal divide (BigDecimal divisor)//除法
//public BigDecimal divide (BigDecimal divisor,int scale, int roundingMode)//scale 小数点后面保留几位
//// roundingMode 取舍模式 比如四舍五入
BigDecimal a = new BigDecimal(10.00000000000002);
BigDecimal b = new BigDecimal(10.00000000000002888888888888888888888888888);
BigDecimal add = a.add(b);
System.out.println(add);
BigDecimal subtract = a.subtract(b);
System.out.println(subtract);
BigDecimal multiply = a.multiply(b);
System.out.println(multiply);
}
}
public class MyTest2 {
public static void main(String[] args) {
BigDecimal a = new BigDecimal(10);
BigDecimal b = new BigDecimal(3);
// BigDecimal divide = a.divide(b); 能整除
//不能整除
//ROUND_CEILING
//接近正无穷大的舍入模式。
//public BigDecimal divide (BigDecimal divisor,int scale, int roundingMode)//scale 小数点后面保留几位
//// roundingMode 取舍模式 比如四舍五入
BigDecimal divide = a.divide(b, 30, BigDecimal.ROUND_UP);
System.out.println(divide);
System.out.println(10.0 / 3.0);
System.out.println(1 == 0.9999999999999999999999999999999999999999999999999999999999999999999999);
}
}