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);
}
}
Clase de matemáticas y clases relacionadas
Supongo que te gusta
Origin blog.csdn.net/m0_51945027/article/details/112798346
Recomendado
Clasificación