Java-数学类-random、BigDecimal

一、随机数类 Random(注意边界)

package com.joeaaa.demo14;

import java.util.Random;
/*
* 产生10个随机正整数,范围0~20
*/
public class RandomTest {
    public static void main(String[] args) {
        Random rand = new Random();
        for(int x = 0; x<10; x++){
            System.out.println(rand.nextInt(21));
        }
    }
}

二、round()四舍五入

public static long round(double a)
-15.5 -> -15
-15.6 -> -16
15.6 -> 16

三、大数字操作类

使用java.math.BigInteger,java.math.BigDecimal进行操作(均为Number的子类)

大整数操作类:BigInteger

  1. 加法:public BigInteger add(BigInteger val);
  2. 减法:public BigInteger substrct(BigInteger val);
  3. 乘法:public BigInteger multiply(BigInteger val);
  4. 除法(不保存余数):public BigInteger divide(BigInteger val);
  5. 除法(保存余数):public BigInteger[] dividedAndRemainder(BigInteger val),数组第一个元素为商,第二个元素为余数。

四、大小数操作类BigDecimal

用于准确位数的四舍五入操作

  1. 构造:public BigDecimal(double val);
  2. 除法:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode);
  3. 进位模式:public static final int ROUND_HALF_UP.
package com.joeaaa.demo14;
/*
* 完成准确位的四舍五入操作
*/

import java.math.BigDecimal;

class MyMath{
    public static double round(double num, int sacle){
        BigDecimal big = new BigDecimal(num);
        BigDecimal result = big.divide(new BigDecimal(1), sacle, BigDecimal.ROUND_HALF_UP);
        return result.doubleValue();
    }
}
public class BigDecimalTest {
    public static void main(String[] args) {
        System.out.println(MyMath.round(15.5,0)); // 16.0
        System.out.println(MyMath.round(-15.5,0)); // -16.0
        System.out.println(MyMath.round(12.3456,2)); // 12.35

    }
}