看似不起波澜的日复一日,会突然在某一天让人看到坚持的意义
—— 24.5.8
数学相关类
1.Math类介绍
1.概述
数学工具类
2.作用
主要用于数学运算
3.特点
a、构造方法私有了
b、方法都是静态的
4.使用
类名直接调用
static int abs(int a) ->求参数的绝对值
static double ceil(double a) -> 向上取整
static double floor(double a) ->向下取整
static long round(double a) ->四舍五入
static int max(int a,int b)->求两个数之间的较大值
static int min(int a,int b)->求两个数之间的较小值
5.示例
public static void main(String[] args) { // static int abs(int a)->求参数的绝对值 import static java.lang.Math.abs; int abs = Math.abs(-27); System.out.println("绝对值:"+ abs); // static double ceil(double a)-> 向上取整 double ceil = Math.ceil(62.1); System.out.println("向上取整:"+ceil); // static double floor(double a)->向下取整 double floor = Math.floor(63.9); System.out.println("向下取整:"+floor); // static long round(double a)->四舍五入 long round = Math.round(62.6); System.out.println("四舍五入:"+round); // static int max(int a,int b)->求两个数之间的较大值 int max = Math.max(63,81); System.out.println("较大值:"+max); // static int min(int a,int b)->求两个数之间的较小值 int min = Math.min(81,63); System.out.println("较小值:"+min); }
API文档
搜索 JDK API
具体方法可以查阅API文档(搜索 JDK API)
2.BigInteger类的介绍和使用
1.BigInteger介绍
1.问题描述:
我们操作数据,将来的数据有可能非常大,大到比1ong还要大,这种数据我们一般称之为"对象"
2.作用:
处理超大整数
3.构造:
BigInteger(string va1)-> 参数的格式必须是数字形式
4.方法:
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)的 BigInteger2.BigInteger使用
public static void main(String[] args) { BigInteger b1 = new BigInteger("212121212221212121112121212122211144545"); BigInteger b2 = new BigInteger("212121212221212121112121212122211155545"); // BigInteger add(BigInteger val), 其返回值为(this + val)的 BigInteger System.out.println(b1.add(b2)); // BigInteger subtract(BigInteger val), 其返回值为(this - val)的 BigInteger System.out.println(b2.subtract(b1)); // BigInteger multiply(BigInteger val),其返回值为(this * val)的 BigInteger System.out.println(b2.multiply(b1)); // BigInteger divide(BigInteger val),其返回值为(this / val)的 BigInteger System.out.println(b2.divide(b1)); }
int intValue()将BigInteger转成int
longlongValue()将BigInteger 转成 longBigInteger上限:42亿的21亿次方,内存根本扛不住,所以我们可以认为Biginteger无上限
3.BigDecimal类的介绍和使用
1.BigDecimal介绍
1.问题描述:
我们知道直接用f1oat战者doub1微运算会出现精座损失的问题,所以将案设计到钱,我们就不能用float或者double直接做运算
2.作用:
主要是解决float和double直接做运算出现的精度损失问题
3.构造方法:
BigDecimal(string val)->va1必须要是数字形式
4.常用方法:
static BigDecimal valueof(double val) --> 此方法初始化小数时可以传入double型数据
BigDecimal add(BigDecimal val) 返回其值为(this + val)的BigDecimal
BigDecimal subtract(BigDecimal val) 返回其值为(this - val)的 BigDecimal
BigDecimal multiply(BigDecimal val) 返回其值为(this * val)的 BigDecimal
BigDecimal divide(BigDecimal val) 返回其值为(this / val)的 BigDecimal
BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
divisor:被除数
scale:指定保留几位小数
roundingMode:取舍方式,查阅API文档
static int ROUND_UP --> 向上加1
static int ROUND_DOWN --> 直接舍去
static int ROUND_HALF_UP --> 四舍五入5.注意:
如果除不尽,会报错,出现运算异常
2.BigDecimal使用
public static void main(String[] args) { big01(); big02(); big03(); } private static void big03() { BigDecimal b1 = new BigDecimal("3.55"); BigDecimal b2 = BigDecimal.valueOf(2.12); BigDecimal divide = b1.divide(b2,2,BigDecimal.ROUND_UP); System.out.println("b1/b2="+divide); } private static void big02() { BigDecimal b1 = new BigDecimal("3.55"); // static BigDecimal valueof(double val) --> 此方法初始化小数时可以传入double型数据 BigDecimal b2 = BigDecimal.valueOf(2.12); // BigDecimal add(BigDecimal val) 返回其值为(this + val)的BigDecimal System.out.println("b1+b2="+b1.add(b2)); // BigDecimal subtract(BigDecimal val) 返回其值为(this - val)的 BigDecimal System.out.println("b1-b2="+b1.subtract(b2)); // BigDecimal multiply(BigDecimal val) 返回其值为(this * val)的 BigDecimal System.out.println("b1*b2="+b1.multiply(b2)); // BigDecimal divide(BigDecimal val) 返回其值为(this / val)的 BigDecimal // System.out.println("b1/b2="+b1.divide(b2));// 除不尽,报错,出现运算异常 } private static void big01() { float a = 3.55f; float b = 2.12f; float result = a-b; System.out.println("result = " + result);// result = 1.4300001 }
double deubleValue()将此BigDecimal转成double
double v = divide.doubleValue(); System.out.println(v);
3.BigDecimal除法过时方法解决
1.注意:
如果调用的成员上面有一个横线,证明此成员过时了,底层会有一个注解@Deprecated修饰,但是过时的成员还能使用,只不过被新的成员代替了,不推荐使用了
2.方法:
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
divisor:代表除号后面的数据
scale:保留几位小数
roundingMode:取舍方式-> RoundingMode是一个枚举,里面成员可以类名直接调用UP:向上加1
DOWN:直接舍去
HALF UP:四舍五入3.示例:
private static void big04() { BigDecimal b1 = new BigDecimal("3.55"); BigDecimal b2 = BigDecimal.valueOf(2.12); BigDecimal divide = b1.divide(b2,2, RoundingMode.DOWN); System.out.println("b1/b2 向下取整="+divide); divide = b1.divide(b2,2, RoundingMode.UP); System.out.println("b1/b2 向上取整 ="+divide); }