1、为什么要使用BigDecimal类?
因为普通的加减乘除运算会存在精度缺失的问题,而使用BigDecimal这个类可以很好的解决这个问题,所以才会使用。
2、API:
计算实例:
普通的加减乘除运算:
public static void main(String[] args) {
System.out.println("计算加法: " + BigDecimal.valueOf(1.9).add(BigDecimal.valueOf(0.2)));
System.out.println("计算减法: " + BigDecimal.valueOf(1.9).subtract(BigDecimal.valueOf(1.5)));
System.out.println("计算乘法: " + BigDecimal.valueOf(1.9).multiply(BigDecimal.valueOf(0.2)));
System.out.println("计算除法: " + BigDecimal.valueOf(1.9).divide(BigDecimal.valueOf(0.2)));
//也可以初始化进行加减乘除
BigDecimal a = new Bigdecimal("1.9");
a.add(BigDecimal.valueOf("0.2"));
a.subtract(BigDecimal.valueOf("0.2"));
a.multiply(BigDecimal.valueOf("0.2"));
a.divide(BigDecimal.valueOf("0.2"));
}
当除不尽的时候,除法中也有相应的解决方法,比如四舍五入等:
public static void main(String[] args) {
BigDecimal a = BigDecimal.valueOf(10), b = BigDecimal.valueOf(3);
//第一个参数是被除数,第二个参数是保留的位数,第三个参数是采用什么方法保留小数
System.out.println(a.divide(b, 3, BigDecimal.ROUND_HALF_UP));
}
// 该程序运行后输出:
3.33
最后就是小数转化为百分比,百分比转化为小数操作:
//小数转化为百分比
DecimalFormat df = new DecimalFormat("0.000%");
String s=df.format(0.01832);
最后s的值是1.832%
注:最后保留几位小数由小数点后0的个数表示
//百分比转化为小数
String percent="1.823%";
percent=percent.replace("%","");
Float fn = Float.valueOf(percent) / 100;
BigDecimal d= new BigDecimal(fn);
System.out.println(d);
最终打印的结果是:0.018229998648166656494140625