- 很多实际应用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal
package com.jacyzhu.bigdecimal;
public class Dem01 {
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
- 位置:java,math包中
- 作用:精确计算浮点数
- 创建方式:
BigDecimal bd = new BigDecimal("1.0");
- 注意:
- 除法:
divide(BigDecimal bd, int scal, RoundingMode mode)
- 参数scal:指定精确到小数点后几位
- 参数mode:指定小数部分的取舍模式,通常采用四舍五入的模式。取值为
BigDecimal.ROUND_HALF_UP
package com.jacyzhu.bigdecimal;
import java.math.BigDecimal;
public class Demo02 {
public static void main(String[] args) {
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(r3);
BigDecimal r4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
System.out.println(r4);
BigDecimal r5 = new BigDecimal("20").divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP);
System.out.println(r5);
}
}
运行结果:
0.1
1.9
0.90
1
6.67