Java常用类系列(四)——数学类(Math、BigDecimal)

一、Math 类

  1. 概述:

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

  2. 常用方法及示例:

    (1) 数学算术:

    * Math.abs(): 求绝对值
    * Math.acos(), Math.asin(), Math.atan(), Math.cos(), Math.sin(), Math.tan():  三角函数
    * Math.sqrt(): 求平方根
    * Math.pow(double a,doble b): 求a的b次幂
    * Math.log():求自然对数
    * Math.exp():求e为底指数
    * Math.toDegrees(double angrad): 弧度—>角度
    * Math.toRadians(double angdeg): 角度—>弧度
    * Math.pow(int arg1,int arg2) : 求第一个参数的第二个参数次幂。
    

    (2) 特殊数:

    * Math.E  :底数,是所有自然数的底数。
    * Math.PI :π ,圆周率 。
    

    (3)数学处理:

    * Math.ceil() : 向上取整。 返回 doouble 类型的值。
    * Math.floor() : 向下取整。 返回 doouble 类型的值。
    * Math.max(double a,double b):求两个数的最大值。
    * Math.min(double a,double b):求两个数的最小值。
    * Math.random(): 返回0.0到1.0的随机数,不包含1。
    * long Math.round(double a):double型数据a转换为long型(四舍五入)。
    

二、BigDecimal 类

  1. 概述:

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

  2. 常用方法及示例

    * public BigDecimal add(BigDecimal augend) :精确加法
    * public BigDecimal subtract(BigDecimal subtrahend):精确减法 
    * public BigDecimal multiply(BigDecimal multiplicand):精确乘法
    * public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) :精确除法。scale 表示保留的位数;在roundingMode中,ROUND_HALF_UP:表示向“最接近的”数字舍入;如果与两个相邻数字的距离相等,则向上舍入;ROUND_HALF_DOWN:表示舍弃部分> 0.5进1; ROUND_HALF_EVEN:表示银行家舍入法 ,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
    
    //加法
    BigDecimal b1 = BigDecimal.valueOf(value1);  
    BigDecimal b2 = BigDecimal.valueOf(value2);  
    b1.add(b2).doubleValue();
    //减法
    BigDecimal b1 = BigDecimal.valueOf(value1);  
    BigDecimal b2 = BigDecimal.valueOf(value2);  
    b1.subtract(b2).doubleValue();
    //乘法
    BigDecimal b1 = BigDecimal.valueOf(value1);  
    BigDecimal b2 = BigDecimal.valueOf(value2);  
    b1.multiply(b2).doubleValue();   
    //除法  
    BigInteger bi = new BigInteger("12433241123");
    BigDecimal bd = new BigDecimal("12435.351");
    BigDecimal bd2 = new BigDecimal("11");
    System.out.println(bd.divide(bd2,BigDecimal.ROUND_HALF_UP));  //>=0.5进1
    System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_HALF_DOWN)); //>0.5进1
    System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_HALF_EVEN));
    

三、Java常用类系列(三): Java常用类系列(三)——文件类(File)

你可能感兴趣的:(java开发)