java.math.BigDecimal的用法及加减乘除计算

  目录

  java.math.BigDecimal及加减乘除计算

  BigDecimal简介

  BigDecimal构造方法

  将 BigInteger转换成 BigDecimal

  一个转换的字符数组表示 BigDecimal成 BigDecimal ,接受字符作为的相同序列 BigDecimal(String)构造

  将 double转换为 BigDecimal ,这是 double的二进制浮点值的精确十进制表示

  将 int成 BigDecimal

  将 long成 BigDecimal

  将BigDecimal的字符串表示 BigDecimal转换为 BigDecimal

  BigDecimal 常用方法 加减乘除运算

  BigDecimal a = new BigDecimal(6);

  BigDecimal b = new BigDecimal(5);

  a.add(b);  //a+b  加

  a.subtract(b); // a-b 减

  a.multiply(b); // a*b 乘

  a.divide(b);// a/b 除

  a.doubleValue();//转换成双精度 double类型

  a.floatValue(); //转换成单精度 float类型

  a.longValue(); //转换成长整形 long 类型

  a.intValue();  //转换成整形 int 类型

  a.pow(3);//a的3次方

  a.abs();//a的绝对值

  a.negate();//a的负数

  BigDecimal数值比较

  BigDecimal a = new BigDecimal(6);

  int i = a.compareTo(BigDecimal.ZERO); //和0做比较

  i==-1;//表示a小于0

  i==0;//表示a=0

  i==1;//表示a大于0

  boolean b1 = a.subtract(b).compareTo(BigDecimal.ZERO) > 0;//判断a-b是否大于0

  BigDecimal常见异常

  java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。

  原因:

  JAVA中如果用BigDecimal做除法的时候一定要在divide方法中传递第二个参数,定义精确到小数点后几位,否则在不整除的情况下,结果是无限循环小数时,就会抛出以上异常。

  解决办法:

  a.divide(b,4,RoundingMode.HALF_UP));

  第二个参数是保留小数位数

  第三个代表模式

  模式:

  心得

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

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

  java.math.BigDecimal 比较大小

  BigDecimal a = new BigDecimal (101);

  BigDecimal b = new BigDecimal (111);

  //使用compareTo方法比较

  //注意:a、b均不能为null,否则会报空指针

  if(a.compareTo(b) == -1){

  System.out.println("a小于b");

  }

  if(a.compareTo(b) == 0){

  System.out.println("a等于b");

  }

  if(a.compareTo(b) == 1){

  System.out.println("a大于b");

  }

  if(a.compareTo(b) > -1){

  System.out.println("a大于等于b");

  }

  if(a.compareTo(b) < 1){

  System.out.println("a小于等于b");

  }

  总结

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

  您可能感兴趣的文章: