BigDecimal概述
由于在运算的时候,float类型和double很容易丢失精度,所有为了能精确的表示、计算浮点数,Java提供了BIgDecimal。
不可变的、任意精度的有符号的十进制数
构造方法
public BigDecimal(String val)
成员方法
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal augend)
public BigDecimal multiply(BigDecimal augend)
public BigDecimal divide(BigDecimal augend)
案例演示
import java.math.BigDecimal;
public class test {
public static void main(String[] args) {
System.out.println(3.3-1.1); //不精确
BigDecimal b1=new BigDecimal(3.3); //不推荐使用
BigDecimal b2=new BigDecimal(1.1);
System.out.println(b1.add(b2)); //+
System.out.println(b1.subtract(b2)); //-
System.out.println(b1.multiply(b2)); //*
//System.out.println(b1.divide(b2)); //(除)
BigDecimal bi1=new BigDecimal("3.3"); //推荐使用
BigDecimal bi2=new BigDecimal("1.1");
System.out.println(bi1.add(bi2)); //+
System.out.println(bi1.subtract(bi2)); //-
System.out.println(bi1.multiply(bi2)); //*
System.out.println(bi1.divide(bi2)); //(除)
BigDecimal bd1=BigDecimal.valueOf(3.3); //推荐使用
BigDecimal bd2=BigDecimal.valueOf(1.1);
System.out.println(bd1.add(bd2)); //+
System.out.println(bd1.subtract(bd2)); //-
System.out.println(bd1.multiply(bd2)); //*
System.out.println(bd1.divide(bd2)); //(除)
}
}
输出:
2.1999999999999997
4.399999999999999911182158029987476766109466552734375
2.199999999999999733546474089962430298328399658203125
3.63000000000000009769962616701375978006148237175607926542869434427540653587129781953990459442138671875
4.4
2.2
3.63
3
4.4
2.2
3.63
3