BigDecimal 用来对超过16位有效位的数,进行精确运算
指定精确小数位
四舍五入 或者 其他模式.
package com.code.test;
import java.math.BigDecimal;
public class TestBigDecimal {
public static void main(String[] args) {
TestBigDecimal tb = new TestBigDecimal();
double d1 = 6;
double d2 = 2.2;
double dou = tb.div(d1, d2, 2);
System.out.println(dou);
}
// 加法
@SuppressWarnings("unused")
private double add(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.add(b2).doubleValue();
}
// 减法(保留两位)
@SuppressWarnings("unused")
private double sub(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
BigDecimal bb = b1.subtract(b2); // 减法
return bb.setScale(2, BigDecimal.ROUND_UP).doubleValue();// 设置精度(小数点)/四舍五入
}
// 乘法(保留两位)
@SuppressWarnings("unused")
private double mul(double d1, double d2) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
BigDecimal bd = b1.multiply(b2);
return bd.setScale(2, BigDecimal.ROUND_UP).doubleValue();
}
// 除法(指定精度/四舍五入)
private double div(double d1, double d2, int scale) {
BigDecimal b1 = new BigDecimal(d1);
BigDecimal b2 = new BigDecimal(d2);
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}