Clase de matemáticas y clases relacionadas

package com.uncle.myutil;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
import java.util.UUID;

/**
 * 与数学相关的类
 * 	Math
 * 	1.所属的包java.lang
 * 	2.Math构造方法是私有的  我们不能直接调用创建对象
 * 	3.由于Math中提供的属性及方法都是static  不需要创建对象
 * 	4.常用的方法
 * 		abs()返回给定数字的绝对值    (参数 int long float double)
 * 		double = ceil()向上取整
 * 		double = floor()向下取整
 * 		double = rint()临近的整数 如果两边距离一样 则返回偶数
 * 		int = round()  四舍五入的整数
 * 		max(a,b)  min(a,b)    (参数int  long  float  double)
 * 		pow(a,b)  a的b次方  (参数double 返回值double)
 * 		sqrt(double a)  获取给定参数的平方根
 * 		double = random();	  随机产生一个     [0.0--1.0)
 * 	5.Math.random()计算小数的时候精确程度可能有些损失
 * 		0-9之间的随机整数
 * 		int value = (int)(Math.random()*10);
 * 		5.0---10.9之间的小数
 * 		(Math.random()*6)+5
 * 		0.0---0.99999 * 6
 * 		(0.0---5.49999)+5
 *
 * 	Random类
 * 	1.在java.util包中的类   需要import导入
 * 	2.没有任何继承关系  默认继承Object类
 * 	3.查找构造方法--->如何创建对象
 * 		Random r = new Random();
 * 	4.类中提供的常用方法
 * 		r.nextInt();   随机产生 int取值范围的整数 有正有负
 * 		r.nextInt(int bound);   随机产生一个  [0--bound)  整数  
 * 			注意bound必须为正数  否则会出现如下的运行时异常
 * 			IllegalArgumentException
 * 		r.nextFloat()  随机产生一个 [0.0---1.0)
 * 		r.nextBoolean()   随机产生一个boolean值   true  false
 *
 * 	UUID类
 * 	1.所属的包  java.util    需要import导入
 * 	2.没有任何继承关系  默认继承Object类
 * 	3.构造方法有  没有无参数的  我们通常不会创建对象
 * 		UUID uuid = UUID.randomUUID();
 *         		System.out.println(uuid.toString());//数据库表格主键 primary key
 * 		产生一个32位的随机元素 每一个位置是一个16进制的数字
 *
 * 	BigInteger类 大整数		long  -2的63次方 ~ 2的63次方-1
 * 	1.所属的包java.math  需要import导入
 * 	2.继承自Number   
 * 	3.如何创建对象   提供的构造方法全部都是带参数的
 * 		通常利用带String参数的构造方法创建这个类的对象
 * 		BigInteger  bi = new BigInteger("123");	
 * 	4.类中的常用方法
 * 		做四则运算 
 * 		add()   subtract()   multiply()   divide()
 * 	5.小例子   设计一个方法 用来计算给定数字的阶乘  5   1*2*3*4*5==120
 * 		//设计一个方法  用来计算给定数字的阶乘
 * 		//参数   返回值
 * 		public BigInteger factorial(int num){
 * 			BigInteger result = new BigInteger("1");
 * 			for(int i=1;i<=num;i++){
 * 				result = result.multiply(new BigInteger(i+""));
 *                        }
 * 			return result;* 		}
 *
 * 	BigDecima类    超过了double取值范围
 * 	1.所属的包  java.math包
 * 	2.继承Number类
 * 	3.通常也是可以通过 带String参数 构建对象
 * 	4.类中的常用方法
 * 		做四则运算 
 * 		add()   subtract()   multiply()   divide()
 * 		两个参数前面是保留小数点之后的位数  后面参数是设置的模式
 * 		对象.setScale(2,BigDecimal.ROUND_DOWN);
 *
 *
 * 	将小数点之前和之后的位数都能处理的类---->格式化
 * 	DecimalFormat
 * 	1.所属的包 java.text
 * 	2.import导入才能使用
 * 	3.通过带String参数的构造方法创建一个格式化对象   0  #
 * 	4.调用format方法将一个小数格式化成一个字符串
 * 		DecimalFormat df = new DecimalFormat("000.###");// 0 #
 *         		String value = df.format(12.45);
 *         		System.out.println(value);
 */
public class TestMath {
    
    

    //设计一个方法  用来计算给定数字的阶乘
    //参数   返回值
    public BigInteger factorial(int num){
    
    
        BigInteger result = new BigInteger("1");
        for(int i=1;i<=num;i++){
    
    
            result = result.multiply(new BigInteger(i+""));
        }
        return result;
    }

    public static void main(String[] args){
    
    
//        System.out.println(Math.ceil(1.4));//1.0
//        System.out.println(Math.floor(1.4));//1.0
//        System.out.println(Math.rint(1.4));//1.0
//        System.out.println(Math.round(1.4));//1
//        System.out.println(Math.sqrt(16));
//
//        Random r = new Random();
//        int value = r.nextInt();//随机产生一个整数
//        System.out.println(value);// -2147483648 ~  2147483647
//
//        int result = r.nextInt(10);
//        System.out.println(result);//  [0--10)
//
//        float f = r.nextFloat();
//        System.out.println(f);//  [0.0---1.0)
//
//        //5.0---10.9范围
//        float x = (r.nextInt(6)+5 + r.nextFloat());
//
//        UUID uuid = UUID.randomUUID();
//        System.out.println(uuid.toString());//数据库表格主键 primary key
//
//        BigInteger  bi1 = new BigInteger("123");
//        BigInteger  bi2 = new BigInteger("456");
//        bi1.add(bi2);
//        bi1.subtract(bi2);
//        bi1.multiply(bi2);
//        bi1.divide(bi2);


        //创建对象 调用计算阶乘的方法
        TestMath tm = new TestMath();
        BigInteger result = tm.factorial(25);
        System.out.println(result);

        BigDecimal decimal = new BigDecimal("123.456");
        //小数点之后保留两位  按照向下取整的方式进行截取
        decimal = decimal.setScale(2,BigDecimal.ROUND_DOWN);
        System.out.println(decimal);

        DecimalFormat df = new DecimalFormat("000.###");// 0 #
        String value = df.format(12.45);
        System.out.println(value);
    }
}

Supongo que te gusta

Origin blog.csdn.net/m0_51945027/article/details/112798346
Recomendado
Clasificación