30.Java-Biginteger和BigDecimal

Biginteger

不可变的,任意精度的整数,Biginteger提供所有Java的基本整数操作符的对应物,并提供java.lang.Math的所有相关方法,另外,BIgInteger还提供以下运算:模算数.GCD计算.质数测试.素数生成.位操作以及一些其他操作.

  • [ ] 创建Biginteger
  • 通过构造方法

Biginteger(String var);//将Biginteger的十进制字符串表示形式转换为Biginteger.

  • 通过静态工厂方法

返回其值等于指定long的值- ,推荐使用
static BigInteger valueOf(long val)

public static void main(String[] args){
    Biginteger max1 = Biginteger.valueOf(Long.MAX_VALUE);
    Biginteger max2 = Biginteger.valueOf(Long.MAX_VALUE);
    Biginteger max = max1.add(max2);
}
BigDecimal

不可变的,任意精度的有符号十进制数,BigDecimal类提供以下操作:算数.标度操作.舍入.比较.哈希算法和格式转换.toString()方法提供BigDecimal的规范表示形式;

BigDecimal(double val)//将double 转换为BigDecimal,后者double的二进制浮点值准确的十进制表示形式;
BigDecimal(String val)//将BigDecimal的字符串表示形式转换为BigDecimal;
BigDecimal(long val)//将long转换为BigDecimal
BigDecimal(int val)//将int 转换BigDecimal;
BigDecimal(BigInteger val)//将BigInteger转换为BigDecimal
public class Tese{
    public static void main(String[] args){
        //必须使用String的构造方法才能得到精确的小数位数
        BigDecimal b3 = new BigDecimal("0.002");
        BigDecimal b4 = new BigDecimal("0.000001");
        show1(b3,b4);
    }
    
    public static void operate(BigDecical a,BigDecaiaml b){
        System.out.println(a.add(b));//0.002001
        System.out.println(a.multiply(b));//2E-9
        System.out.println(a.divide(b));//2E+3
        System.out.println(a.subtract(b));//0.001999
    }
}
如果遇到除完无限循环的情况
public class MathDemo {
    public static void main(String[] args) {
        
        BigDecimal b1 = new BigDecimal("1.00");
        BigDecimal b2 = new BigDecimal("3.00");
        
        //第二个参数是取多少位小数
        System.out.println(b1.divide(b2, 3, BigDecimal.ROUND_HALF_UP));
    }
}

你可能感兴趣的:(30.Java-Biginteger和BigDecimal)