重学java 32.API 3.数学相关类

看似不起波澜的日复一日,会突然在某一天让人看到坚持的意义

                                                                                        —— 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)的 BigInteger

2.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);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值