当前位置:  首页>> 技术小册>> Java语言基础9-常用API和常见算法

4.2.1 概述

  • 基本数据类型 long 、double 都有其取值范围,一般遇到超过范围的数据,就需要用来大数运算类了。
  • java.math.BigInteger :大整数。
  • java.math.BigDecimal :大浮点。

4.2.2 BigInteger

构造方法:

  1. public BigInteger(String val){}

加法:

  1. public BigInteger add(BigInteger val){}

减法:

  1. public BigInteger subtract(BigInteger val) {}

乘法:

  1. public BigInteger multiply(BigInteger val){}

除法:

  1. public BigInteger divide(BigInteger val){}

余数:

  1. public BigInteger remainder(BigInteger val){}

示例:

  1. package com.github.big.demo1;
  2. import java.math.BigInteger;
  3. /**
  4. * @author maxiaoke.com
  5. * @version 1.0
  6. *
  7. */
  8. public class Test {
  9. public static void main(String[] args) {
  10. BigInteger b1 = new BigInteger("124");
  11. BigInteger b2 = new BigInteger("123");
  12. System.out.println("加法:" + b1.add(b2)); // 加法:247
  13. System.out.println("减法:" + b1.subtract(b2)); // 减法:1
  14. System.out.println("乘法:" + b1.multiply(b2)); // 乘法:15252
  15. System.out.println("除法:" + b1.divide(b2)); // 除法:1
  16. System.out.println("余数:" + b1.remainder(b2)); // 余数:1
  17. }
  18. }

4.2.3 RoundingMode 枚举类

  • UP :远离零方向舍入的舍入模式。
  • DOWN :向零方向舍入的舍入模式。
  • CEILING :向正无限大方向舍入的舍入模式。
  • FLOOR :向负无限大方向舍入的舍入模式。
  • HALF_UP :向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
  • HALF_DOWN :向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
  • HALF_EVEN :向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
  • UNNECESSARY :用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。

4.2.4 BigDecimal

构造方法:

  1. public BigDecimal(String val) {}

加法:

  1. public BigDecimal add(BigDecimal augend){}

减法:

  1. public BigDecimal divide(BigDecimal divisor){}

乘法:

  1. public BigDecimal multiply(BigDecimal multiplicand) {}

除法:

  1. public BigDecimal divide(BigDecimal divisor){}
  2. public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode){}
  3. public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode){}

余数:

  1. public BigDecimal remainder(BigDecimal divisor){}

示例:

  1. package com.github.big.demo2;
  2. import java.math.BigDecimal;
  3. import java.math.RoundingMode;
  4. /**
  5. * @author maxiaoke.com
  6. * @version 1.0
  7. *
  8. */
  9. public class Test {
  10. public static void main(String[] args) {
  11. BigDecimal b1 = new BigDecimal("3.55");
  12. BigDecimal b2 = new BigDecimal("2.12");
  13. System.out.println("加法:" + b1.add(b2));
  14. System.out.println("减法:" + b1.subtract(b2));
  15. System.out.println("乘法:" + b1.multiply(b2));
  16. System.out.println("除法:" + b1.divide(b2, 2, RoundingMode.HALF_UP));
  17. }
  18. }

该分类下的相关小册推荐: