java 14 -6 BigInteger和BigDecimal

时间:2022-01-12 01:42:47

BigInteger:可以让超过Integer范围内的数据进行运算

  构造方法:
    BigInteger(String val)

 import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
// 这几个测试,是为了简单超过int范围内,Integer就不能再表示,所以就更谈不上计算了。
// Integer i = new Integer(100);
// System.out.println(i);
// // System.out.println(Integer.MAX_VALUE);
// Integer ii = new Integer("2147483647");
// System.out.println(ii);
// // NumberFormatException 这个字符已经超出了int的范围
// Integer iii = new Integer("2147483648");
// System.out.println(iii); // 通过大整数来创建对象
BigInteger bi = new BigInteger("2147483648");
System.out.println("bi:" + bi);
}
}

  由于在运算的时候,float类型和double很容易丢失精度,演示案例。
    所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

  BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
    构造方法:
    public BigDecimal(String val)

  1、public BigDecimal add(BigDecimal augend) 加
  2、public BigDecimal subtract(BigDecimal subtrahend) 减
  3、public BigDecimal multiply(BigDecimal multiplicand) 乘
  4、public BigDecimal divide(BigDecimal divisor) 除
  5、public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取
      divisor - 此 BigDecimal 要除以的值。
      scale - 要返回的 BigDecimal 商的标度。
      roundingMode - 要应用的舍入模式。
    经常用ROUND_HALF_UP,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式

 import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
//在运算的时候,float类型和double很容易丢失精度,演示案例。
// System.out.println(0.09 + 0.01); 0.09999999999999999
// System.out.println(1.0 - 0.32); 0.6799999999999999
// System.out.println(1.015 * 100); 101.49999999999999
// System.out.println(1.301 / 100); 0.013009999999999999 //为了能精确的表示、计算浮点数,Java提供了BigDecimal
BigDecimal bd1 = new BigDecimal("0.09");
BigDecimal bd2 = new BigDecimal("0.01");
System.out.println("add:" + bd1.add(bd2));
System.out.println("-------------------"); BigDecimal bd3 = new BigDecimal("1.0");
BigDecimal bd4 = new BigDecimal("0.32");
System.out.println("subtract:" + bd3.subtract(bd4));
System.out.println("-------------------"); BigDecimal bd5 = new BigDecimal("1.015");
BigDecimal bd6 = new BigDecimal("100");
System.out.println("multiply:" + bd5.multiply(bd6));
System.out.println("-------------------"); BigDecimal bd7 = new BigDecimal("1.301");
BigDecimal bd8 = new BigDecimal("100");
System.out.println("divide:" + bd7.divide(bd8));//divide:0.01301
System.out.println("divide:"
+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));//divide:0.013
System.out.println("divide:"
+ bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP)); //divide:0.01301000
}
}