BigDecimal是在java.math.BigDecimal包下的,是一种解决浮点数失真的方法。
因为浮点数在计算机二进制中表示比较有限,所以会被截取一段,导致失真。
如:
public class core1 {
public static void main(String[] args) {
System.out.println(2.0-1.9);//0.10000000000000009
}
}
java发现了这个问题,使用BigDecimal就可以解决这个问题。
public class core1 {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("2.0");
BigDecimal b = new BigDecimal("1.0");
BigDecimal c = a.subtract(b);
System.out.println(c);
}
}
对于BigDecimal的创建还有一种:
public class core1 {
public static void main(String[] args) {
BigDecimal a =BigDecimal.valueOf(2.0);
BigDecimal b =BigDecimal.valueOf(1.0);
BigDecimal c = a.subtract(b);
System.out.println(c);
}
}
如果要保留小数,这里以3位为例子:
System.out.println(c.setScale(3, RoundingMode.HALF_UP));
关于第二个参数: