BigDecimal
下面这个例子
public class _BigDecimal {
public static void main(String[] args) {
double d1 =1.0;
double d2 =0.9;
System.out.println(d1-d2);
double result=(1.4-0.5)/0.9;
System.out.println(result);
}
}
输出结果:
0.09999999999999998
0.9999999999999999
这种原因是因为很多实际应用中需要精确运算,而double近似值存储,不符合要求,需要借助BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
public class _BigDecimal {
public static void main(String[] args) {
double d1 =1.0;
double d2 =0.9;
// System.out.println(d1-d2);
double result=(1.4-0.5)/0.9;
// System.out.println(result);
//BigDecimal,大的浮点数精确计算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//减法
BigDecimal r1=bd1.subtract(bd2);
System.out.println(r1);
//加法
BigDecimal r2=bd1.add(bd2);
System.out.println(r2);
//乘法
BigDecimal r3=bd1.multiply(bd2);
System.out.println(bd2);
//除法
BigDecimal r4=new BigDecimal("1.4").subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println(r4);
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
//保留两位小数,四舍五入
System.out.println(r5);
}
}
输出结果:
0.1
1.9
0.9
1
3.33