BigDecimal的使用

BigDecimal使用

浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用 equals 来判断。

float a = 1.0f - 0.9f;
float b = 0.9f - 0.8f;
System.out.println(a);// 0.100000024
System.out.println(b);// 0.099999964
System.out.println(a == b);// false

上面实验中,具有基本数学知识的我们很清楚的知道输出并不是我们想要的结果(精度丢失

一种很常用的方法是:使用 BigDecimal 来定义浮点数的值,再进行浮点数的运算操作。
subtract()减法

BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
BigDecimal c = new BigDecimal("0.8");
BigDecimal x = a.subtract(b);// 0.1
BigDecimal y = b.subtract(c);// 0.1
System.out.println(x.equals(y));// true 

BigDecimal中的常用方法

  1. add(BigDecimal)

    BigDecimal对象中的值相加,返回BigDecimal对象

  2. subtract(BigDecimal)

    BigDecimal对象中的值相减,返回BigDecimal对象

  3. multiply(BigDecimal)

    BigDecimal对象中的值相乘,返回BigDecimal对象

  4. divide(BigDecimal)

    BigDecimal对象中的值相除,返回BigDecimal对象

  5. toString()

    将BigDecimal对象中的值转换成字符串

  6. doubleValue()

    将BigDecimal对象中的值转换成双精度数

  7. floatValue()

    将BigDecimal对象中的值转换成单精度数

  8. longValue()

    将BigDecimal对象中的值转换成长整数

  9. intValue()

    将BigDecimal对象中的值转换成整数

  10. BigDecimal 的大小比较

    a.compareTo(b)` : 返回 -1 表示小于,0 表示 等于, 1表示 大于。

  11. BigDecimal 保留几位小数

    通过 setScale方法设置保留几位小数以及保留规则。保留规则有挺多种。

    BigDecimal m = new BigDecimal("1.255433");
    BigDecimal n = m.setScale(3,BigDecimal.ROUND_HALF_DOWN);
    System.out.println(n);// 1.255
    

    `

BigDecimal 的使用注意事项

注意:我们在使用BigDecimal时,为了防止精度丢失,推荐使用它的 BigDecimal(String) 构造方法来创建对象。

BigDecimal 主要用来操作(大)浮点数,BigInteger 主要用来操作大整数(超过 long 类型)。

BigDecimal 的实现利用到了 BigInteger, 所不同的是 BigDecimal 加入了小数位的概念

你可能感兴趣的:(BigDecimal的使用)