BigInteger类和BigDecimal类

BigInteger类

BigInteger适合保存比较大的整型
当在编程中遇到需要保存一个特别大的数字,比如地球的人口。
这时如果用long类型保存可能都不够了,此时就需要用到BigInteger
在这里插入图片描述

  • BigInteger不能直接±*/
  • add()加
  • subtract()减
  • multiply()乘
  • divide()除
    使用演示:
public class test2 {
    public static void main(String[] args) {
        BigInteger bigInteger = new BigInteger("999999999999999999999999999999999999");
        BigInteger big2 = new BigInteger("1");
        //加
        BigInteger add = bigInteger.add(big2);
        System.out.println(add);
        //减
        BigInteger subtract = bigInteger.subtract(big2);
        System.out.println(subtract);
        //乘
        BigInteger multiply = bigInteger.multiply(big2);
        System.out.println(multiply);
        //除
        BigInteger divide = bigInteger.divide(big2);
        System.out.println(divide);
    }
}

BigDecimal类

BigDecimal类用于保存精度需求很高的浮点类型(小数),比如天文运算,银行,
在使用double类型保存时,小数超过一定长度就会损失精度

double num = 902.1234567891112222333444555666;
        System.out.println(num);

运行结果是:
902.1234567891112
很明显后面的精度直接没了,此时就需要用到BigDecimal保存
BigDecimal和BigInteger一样不能直接加减乘除,同样是使用方法

使用演示:

public class test2 {
    public static void main(String[] args) {
        BigDecimal bigDecimalr = new BigDecimal("902.1234567891112222333444555666");
        BigDecimal big2 = new BigDecimal("1.1");
        //加
        BigDecimal add = bigDecimalr.add(big2);
        System.out.println(add);
        //减
        BigDecimal subtract = bigDecimalr.subtract(big2);
        System.out.println(subtract);
        //乘
        BigDecimal multiply = bigDecimalr.multiply(big2);
        System.out.println(multiply);
        //除
        //BigDecimal divide = bigDecimalr.divide(big2);
        //System.out.println(divide);
    }
}

注意点:在精度很高的除法运算中,很可能会得到无限小数,比如上面的数除以1.1
而导致报异常,所以需要我们处理一下

public class test2 {
    public static void main(String[] args) {
        BigDecimal bigDecimalr = new BigDecimal("902.12");
        BigDecimal big2 = new BigDecimal("1.1");
        //除
        BigDecimal divide = bigDecimalr.divide(big2,BigDecimal.ROUND_CEILING);
        System.out.println(divide);
    }
}

ROUND_CEILING表示将结果限制到被除数的小数精度长度,比如上面的被除数是902.12,只有两位小数,那么除1.1后得到的结果也是保留两位小数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值