首先我们先来看如下代码示例:
public class Test_1 {
2 public static void main(String[] args) {
3 System.out.println(0.06+0.01);
4 System.out.println(1.0-0.42);
5 System.out.println(4.015*100);
6 System.out.println(303.1/1000);
7 }
9 }
运行结果如下。
0.06999999999999999
0.5800000000000001
401.49999999999994
0.30310000000000004
因为计算机是二进制的,我们的浮点型无法精确的用二进制表示(2.4的二进制表示并非就是精确的2.4。反而最为接近的二进制表示是 2.3999999999999999)
在使用BigDecimal类来进行计算的时候,主要分为以下步骤:
1. 用float或者double变量构建BigDecimal对象。
2. 通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
3. 把BigDecimal对象转换成float,double,int等类型。
创建BigDecimal对象的方法:
1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));
2 BigDecimal b2 = BigDecimal.valueOf(0.48);
常用计算方法:
1 public BigDecimal add(BigDecimal value); //加法
2 public BigDecimal subtract(BigDecimal value); //减法
3 public BigDecimal multiply(BigDecimal value); //乘法
4 public BigDecimal divide(BigDecimal value); //除法
BigDecimal对象转换成相应的基本数据类型
double d=b1.doubleValue();
float f=b1.floatValue();
除法
b1.divide(b2) 如果不能除尽则会报错
b1.divide(b2,int scale,int roundingMode)
scale------小数点后面保留几位数
roundingMode -----舍入模式,对保留小数的后一位的操作
0——ROUND_UP 绝对值加1
1——ROUND_DOWN 绝对值减1
2——ROUND_CEILING 向上加1
3——ROUND_FLOOR 向下减1
4——ROUND_HALF_UP
5——ROUND_HALF_DOWN
6——ROUND_HALF_EVEN
7——ROUND_UNNECESSARY
b1.divide(b2,int scale,RoundingMode roundingMode)
网友评论