一、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);
}
}