【JAVA高级&常用类】Math、BigInteger、BigDecimal

【JAVA高级&常用类】Math、BigInteger、BigDecimal

概述

通过该笔记复盘 java 提供的一些科学计算相关的工具类 BigIntegerBigDecimal ,以及 java.lang.Math 下提供的一些常用静态方法。

目录

主要内容

0x01:Math类的一些静态方法

java.lang.Math 提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为 double 型。一些常用的方法如下

  • abs 绝对值
  • acos,asin,atan,cos,sin,tan 三角函数
  • sqrt 平方根
  • pow(double a,doble b) a的b次幂
  • log 自然对数
  • exp e为底指数
  • max(double a,double b)
  • min(double a,double b)
  • random() 返回0.0到1.0的随机数
  • long round(double a) double型数据a转换为long型(四舍五入)
  • toDegrees(double angrad) 弧度—>角度
  • toRadians(double angdeg) 角度—>弧度

0x02:BigInteger类

属于java.Math包下

Integer 类作为 int 的包装类,能存储的最大整型值为 2^32 -1, 而 Long 类也是有限的,最大为 2^63 -1

如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。

java.math 包的 BigInteger 可以表示 “不可变的任意精度的整数” 。提供了所有 Java 的基本整数操作符的对应物,并提供java.lang.Math 的所有相关方法。

另外, BigInteger 还提供以下运算:模算术、 GCD 计算、质数测试、素数生成、位操作以及一些其他操作。

常用的方法如下:

  • public BigInteger abs()

    返回此 BigInteger 的绝对值的 BigInteger。

  • BigInteger add(BigInteger val)

    返回其值为 (this + val) 的 BigInteger

  • BigInteger subtract(BigInteger val)

    返回其值为 (this - val) 的 BigInteger

  • BigInteger multiply(BigInteger val)

    返回其值为 (this * val) 的 BigInteger

  • BigInteger divide(BigInteger val)

    返回其值为 (this / val) 的 BigInteger。整数相除只保留整数部分。

  • BigInteger remainder(BigInteger val)

    返回其值为 (this % val) 的 BigInteger。

  • BigInteger[] divideAndRemainder(BigInteger val)

    返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。

  • BigInteger pow(int exponent) :

    返回其值为 (thisexponent) 的 BigInteger。

0xFF:BigDecimal类

属于java.Math包下

一般的 Float 类和 Double 类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用 java.math.BigDecimal类。

BigDecimal 类支持不可变的、任意精度的有符号十进制定点数。

构造器:

  • public BigDecimal(double val)
  • public BigDecimal(String val)

常用方法:

  • public BigDecimal add(BigDecimal augend)
  • public BigDecimal subtract(BigDecimal subtrahend)
  • public BigDecimal multiply(BigDecimal multiplicand)
  • public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

使用测试:

BigInteger bi = new BigInteger("1243324112234324324325235245346567657653");
BigDecimal bd = new BigDecimal("12435.351");
BigDecimal bd2 = new BigDecimal("11");
System.out.println(bi);
//         System.out.println(bd.divide(bd2));
System.out.println(bd.divide(bd2, BigDecimal.ROUND_HALF_UP));
System.out.println(bd.divide(bd2, 25, BigDecimal.ROUND_HALF_UP));

总结

记录,复盘,加深印象,以能够在遇到一些需求时能够运用到该笔记内的一些工具类。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://codeyee.com/archives/java-math-biginteger-bigdecimal.html