【JavaSE】BigInteger 和 BigDecimal 类
【摘要】 BigInteger类 常用方法 1. add 加 2. subtract 减 3. multiply 乘 4. divide 除 BigDecimal 类 常用方法 1. add 加 2. subtract 减 3. multiply 乘 4. divide 除 应用场景: BigInteger类 常用方法当编程中,需要处理很大的整数,long 不够用long l = 237888888...
BigInteger类 常用方法
- 当编程中,需要处理很大的整数,
long不够用
long l = 23788888899999999999999999999l;

- 可以使用
BigInteger的类来搞定 - 在对
BigInteger进行加减乘除的时候,需要使用对应的方法,不能直接进行+ - * / - 可以创建一个 要操作的
BigInteger然后进行相应操作
1. add 加
BigInteger bigInteger = new BigInteger("23788888899999999999999999999");
BigInteger bigInteger2 = new BigInteger("10");
System.out.println(bigInteger);
//解读:
//1. 在对 BigInteger 进行加减乘除的时候,需要使用对应的方法,不能直接进行 + - * /
//2. 可以创建一个 要操作的 BigInteger 然后进行相应操作
BigInteger add = bigInteger.add(bigInteger2);
System.out.println(add);//加

2. subtract 减
BigInteger subtract = bigInteger.subtract(bigInteger2);
System.out.println(subtract);//减

3. multiply 乘
BigInteger multiply = bigInteger.multiply(bigInteger2);
System.out.println(multiply);//乘

4. divide 除
BigInteger divide = bigInteger.divide(bigInteger2);
System.out.println(divide);//除

BigDecimal 类 常用方法
- 当需要保存一个精度很高的数时,
double不够用,如下就会出现损失精度的情况
double d = 1999.11111111111999999999999977788d;
System.out.println(d);

- 可以用
BigDecimal来解决
BigDecimal bigDecimal = new BigDecimal("1999.11111111111111999999999999112233");
System.out.println(bigDecimal);

- 如果对
BigDecimal进行运算,比如:加减乘除,需要使用对应的方法 - 创建一个需要操作的
BigDecimal然后调用相应的方法即可
1. add 加
BigDecimal bigDecimal = new BigDecimal("1999.11111111111111999999999999112233");
System.out.println(bigDecimal);
BigDecimal bigDecimal2 = new BigDecimal("1.1");
System.out.println(bigDecimal.add(bigDecimal2));

2. subtract 减
System.out.println(bigDecimal.subtract(bigDecimal2));

3. multiply 乘
System.out.println(bigDecimal.multiply(bigDecimal2));

4. divide 除
- 当除数为
1.1时,会抛出异常ArithmeticException,这是因为最后的结果除不尽,可能是个无限循环小数,所以抛出异常
System.out.println(bigDecimal.divide(bigDecimal2));//可能抛出异常ArithmeticException

- 如下,把除数改为
2,就可以被除尽
BigDecimal bigDecimal = new BigDecimal("1999.11111111111111999999999999112233");
System.out.println(bigDecimal);
BigDecimal bigDecimal2 = new BigDecimal("2");
System.out.println(bigDecimal.divide(bigDecimal2));

解决这种出现异常的方法如下:
- 在调用
divide方法时,指定精度即可,BigDecimal.ROUND_CEILING - 如果有无限循环小数,就会保留 分子 的精度
- 如下就不会再抛出异常了
BigDecimal bigDecimal = new BigDecimal("1999.11111111111111999999999999112233");
System.out.println(bigDecimal);
BigDecimal bigDecimal2 = new BigDecimal("1.1");
System.out.println(bigDecimal.divide(bigDecimal2, BigDecimal.ROUND_CEILING));

应用场景:
Biglnteger适合保存比较大的整型BigDecimal适合保存精度更高的浮点型(小数)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)