Java工具类------Math类的详解及使用

叙述

Java开发时会遇到许多要计算的功能,Math作为一个基础的处理数据的工具类,也尤为常见,Math类有private的构造函数,所以无法创建Math类的对象;Math类中的所有方法都是static(静态)方法,所以可以直接通过类名来调用它们。
例如:

double p = Math.PI;
double a = Math.abs(-0.99237);

虽然Math类的使用非常简单,但是里面的方法还是需要详细了解后才能做到如臂使指,下面就是本文的主题,Math类的详解,一起来回忆回忆吧。

常量

Math类提供了两个静态常量:

PI(圆周率)和 E(自然对数的底数)


    /**
     * The {@code double} value that is closer than any other to
     * <i>e</i>, the base of the natural logarithms.
     */
    public static final double E = 2.7182818284590452354;

    /**
     * The {@code double} value that is closer than any other to
     * <i>pi</i>, the ratio of the circumference of a circle to its
     * diameter.
     */
    public static final double PI = 3.14159265358979323846;

使用时直接调用即可,例如:

 public static void main(String[] args) {
        System.out.println(Math.PI);
        System.out.println(Math.E);
    }

结果:
在这里插入图片描述

方法

一、获取随机数

1. Math.random() 生成0.0-1.0之间一个double类型的随机小数

    public static void main(String[] args) {
        //生成一个0.0到1.0的随机数
        double a = Math.random();
        //生成一个0-100的随机数
        int b = (int) (Math.random()*100);
        //输出所有值
        System.out.println(a);
        System.out.println(b);
    }

第一次运行结果:
在这里插入图片描述
第二次运行结果:
在这里插入图片描述

总结:

Math.random()方法可以生成0.0-1.0之间的随机小数,但是一般常用于生成一个随机整数,例如验证码的拼接,随机取值等等功能都会用到。

二、数字处理

1. Math.abs(-a) 求-a的绝对值(将负数-a变为正数 a)

    public static void main(String[] args) {
        double a = -1.1;
        float b = -1;
        long c = -1111111;
        int d = -1;
        //输出所有值为正数
        System.out.println(Math.abs(a));
        System.out.println(Math.abs(b));
        System.out.println(Math.abs(c));
        System.out.println(Math.abs(d));
    }

运行结果:在这里插入图片描述

总结:

Math.abs() 方法针对4种Java的基本数字类数据(float,int,double,long)进行处理,该方法可以将传入方法的负数变为正数返回,传入的值为正数时,依旧返回正数,此处谨记。

2. Math.max(a,b)比较a和b那个大

3. Math.min(a,b) 比较a和b那个小

    public static void main(String[] args) {
        //10和20那个大
        int a = Math.max(10, 20);
        //-1和-5那个小
        int b = Math.min(-1, -5);
        //输出所有值
        System.out.println("10和20那个大:     " + a);
        System.out.println("-1和-5那个小:     " + b);
    }

运行结果:
在这里插入图片描述
总结:

Math.max(a,b)和
Math.min(a,b)方法就是用来比较大小,适用于4种Java的基本数字类数据(float,int,double,long)比较大小的情况。a和b可以为不同数据类型,这样返回的结果就是占字节多的类型,如a是int、b是double,这样方法返回结果就会默认double类型

三、求整运算

1. Math.ceil(a) 向上取整

2. Math.floor(a)向下取整

    public static void main(String[] args) {
        //向上取整
        double a = Math.ceil(0.1);
        //向下取整
        double b = Math.floor(-1.09);
        //输出所有值
        System.out.println("向上取整    " + a);
        System.out.println("向下取整    " + b);
    }

运行结果:
在这里插入图片描述

总结:

Math.ceil(a) 和Math.floor(a)方需要传double类型的值,返回的也是double类型的值,但是是整数。

3. Math.rint(a) 获取小数a最近的整数,若有两个结果则取偶数

    public static void main(String[] args) {
        //获取小数-5.5最近的整数,若有两个结果则取偶数
        double a =  Math.rint(-5.5);
        //获取小数5.5最近的整数,若有两个结果则取偶数
        double b =  Math.rint(5.5);

        System.out.println("小数-5.5最近的整数    " + a);
        System.out.println("小数5.5最近的整数  " + b);
    }

运行结果:
在这里插入图片描述
总结:

Math.rint(a)是取值距离double类型的a最近的整数(可以理解为一种四舍五入),有个特例就是当有两个和a差值一样的整数值时,方法会返回其中的偶数作为结果,例如
a=0.5时返回结果就是0.0,若a=1.5时返回结果就是2.0, 使用时一定要注意。

4. Math.round(a) 四舍五入

    public static void main(String[] args) {
        //参数为double类型,返回结果为long
        long a =  Math.round(5.49);
        //参数为float类型,返回结果为int
        int b = Math.round(1.51f);
        //输出四舍五入后的值
        System.out.println("5.49四舍五入    " + a);
        System.out.println("1.51f四舍五入   " + b);
    }

运行结果:
在这里插入图片描述
总结:

Math.round(a)方法计算a四舍五入后的结果时,a若为float类型则返回int类型的结果,若a为double类型则返回long类型的结果

四、指数运算

1. Math.pow(a,b) 生成a的b次方

    public static void main(String[] args) {
        //生成10的1次方
        double a = Math.pow(10,1);
        //生成10的3次方
        double b = Math.pow(10,3);
        //生成10的0.2次方
        double c = Math.pow(10,0.2);
        //生成10的-7次方
        double d = Math.pow(10,-7);
        //输出所有值
        System.out.println("10的1次方" + a);
        System.out.println("10的3次方" + b);
        System.out.println("10的0.2次方" + c);
        System.out.println("10的-7次方" + d);
    }

运行结果:
在这里插入图片描述
总结:

Math.pow(a,b) 方法生成a的b次方的值,其中a和b可以是4种Java的基本数字类数据(float,int,double,long)其中一种,且b可以为负数,当a为负数时,方法返回的结果将为NaN,一般用于计算公式等功能。

2. Math.sqrt(a)生成a的平方根

3. Math.cbrt(a)生成a的立方根

     public static void main(String[] args) {
        //获取4的平方值
        double a =  Math.sqrt(4.0);
        //获取8的立方值
        double b =  Math.cbrt(8.0);
        //获取-8的立方值
        double c =  Math.cbrt(-8.0);

        System.out.println("获取4的平方值    " + a);
        System.out.println("获取8的立方值    " + b);
        System.out.println("获取-8的立方值    " + c);
    }

运行结果:
在这里插入图片描述

总结:

Math.sqrt(a)和Math.cbrt(a)都是求a的根,一个是求平方根,一个是求立方根。

4. Math.exp(a) 返回 e 的 a 次幂

    public static void main(String[] args) {
        //获取e的5次幂
        double a = Math.exp(5.0) ;
        System.out.println("e的5次幂:   "+a);
    }

运行结果:
在这里插入图片描述
总结:

Math.exp(a)就是用来计算E的a次幂,一般不常用

5. Math.log(a) 返回 a 的对数,即 ln a 的值

6. Math.log10(a) 返回以 10 为底 a 的对数

7. Math.log1p(a) 返回a和1之和的对数

    public static void main(String[] args) {
        //获取5.0的对数
        double a = Math.log(5.0) ;
        //获取以10为底5.0的对数
        double b = Math.log10(5.0) ;
        //获取以5+1的对数
        double c = Math.log1p(5.0) ;
        System.out.println("5.0的对数:   "+a);
        System.out.println("以10为底5.0的对数:   "+b);
        System.out.println("以5+1的对数:   "+c);
    }

运行结果:
在这里插入图片描述

总结:

三个ln方法,没什么要说的

五、三角函数运算

1. Math.sin(a) double类型a的正弦值

2. Math.cos(a) double类型a的余弦值

3. Math.tan(a) double类型a的正切值

4. Math.asin(a) double类型a的反正弦值

5. Math.acos(a) double类型a的反余弦值

6. Math.atan(a) double类型a的反正切值

7. Math.atan2(a,b) 将a,b的笛卡尔坐标转换为极坐标,并返回极坐标的角度值

  public static void main(String[] args) {
        //获取90度的正弦值
        double a = Math.sin(Math.PI/(180/90)) ;
        //获取0的余弦值
        double b =  Math.cos(0);
        //获取0的正切值
        double c = Math.tan(0) ;
        //获取-1的反正弦值
        double d = Math.asin(-1);
        //获取-1的反余弦值
        double e = Math.acos(-1) ;
        //获取90的反正切值
        double f = Math.atan(90) ;
        //将90,30的笛卡尔坐标转换为极坐标,并返回极坐标的角度值
        double g = Math.atan2(90,30) ;

        System.out.println("90度的正弦值:   "+a);
        System.out.println("0的余弦值:     "+b);
        System.out.println("1的正切值:     "+c);
        System.out.println("-1的反正弦值:   "+d);
        System.out.println("-1的反余弦值:   "+e);
        System.out.println("90的反正切值:   "+f);
        System.out.println("90,30的笛卡尔坐标转换为极坐标,并返回极坐标的角度值:   "+g);
    }

运行结果:
在这里插入图片描述

总结:

三角函数的计算,其中每个方法的参数和返回值都是double类型,参数以弧度代替角度来实现。
例如:计算 90 度的正弦值Math.sin(Math.PI/(180/90))
注意:计算数据时如果a是NaN或无穷大,则返回结果为NaN。

总结

以上基本就是Java中Math工具类中的方法和详解,若有疑问可以留言!

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值