java基础概念29:常见API-Math

时间:2024-11-19 07:16:29

一、Math类

  • 是一个帮助我们用于进行数学计算的工具类
  • 私有化构造方法,所有的方法都是静态的

Math源码:

二、Math类的常用方法

【注意】:Math.abs():获取参数绝对值

Math.absExact方法是JDK 15及更高版本中引入的。

三、示例

示例1:

import java.util.Random;

public class MathTest001 {

    public static void main(String[] args) {
        // 获取绝对值
        System.out.println(Math.abs(-88));//88
        System.out.println(Math.abs(-2147483648));// -2147483648 错误
        System.out.println("============================");

        // 向上取整
        System.out.println(Math.ceil(12.34));// 13.0
        System.out.println(Math.ceil(-12.34));// -12.0
        System.out.println("============================");

        // 向下取整
        System.out.println(Math.floor(12.34));// 12.0
        System.out.println(Math.floor(-12.34));// -13.0
        System.out.println("============================");

        // 四舍五入
        System.out.println(Math.round(12.34));// 12
        System.out.println(Math.round(12.54));// 13
        System.out.println("============================");

        // 返回两个数的较大值
        System.out.println(Math.max(3, 5));// 5
        // 返回两个数的较小值
        System.out.println(Math.min(3, 5));// 3
        System.out.println("============================");

        // 返回a的b次幂
        System.out.println(Math.pow(2, 3));// 8.0
        System.out.println(Math.pow(4, 0.5));// 2.0(平方根)
        System.out.println(Math.pow(4, -0.5));// 0.5
        System.out.println("============================");

        // 平方根
        System.out.println(Math.sqrt(4));// 2.0
        // 立方根
        System.out.println(Math.cbrt(8));// 2.0
        System.out.println("============================");

        // 返回值为double的随机数,范围[0.0, 1.0)
        System.out.println(Math.random());// 0.1660088540057325
        // 返回1~100之间的随机数
        // 方法一(包括1和100)
        System.out.println(Math.floor(Math.random() * 100) + 1);// 73.0
        // 方法二(包括1和100)
        Random random = new Random();
        // nextInt(100) 生成0到99之间的随机数
        System.out.println(random.nextInt(100) +1);// 13

    }

}

 

示例2:自幂数

public class MathTest002 {

    public static void main(String[] args) {
        // 判断为什么没有两位自幂数
        int count1 = 0;
        for (int i = 10; i < 99; i++) {
            // 个位  十位  百位
            int ge = i % 10;
            int shi = i / 10 % 10;

            double sum = Math.pow(ge, 2) + Math.pow(shi, 2);
            if(sum == i){
                count1++;
                System.out.println(sum);
            }
        }

        System.out.println("count1 = " + count1);

        // 四叶玫瑰数
        int count2 = 0;
        for (int i = 1000; i < 9999; i++) {
            // 个位  十位  百位
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            int qian = i / 1000 % 10;

            double sum = Math.pow(ge, 4) + Math.pow(shi, 4) + Math.pow(bai, 4) + Math.pow(qian, 4);
            if(sum == i){
                count2++;
                System.out.println(sum);
            }
        }

        System.out.println("count2 = " + count2);
    }

}